IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA function.Vlookup debogage et aide sur une boucle


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Points : 7
    Points
    7
    Par défaut VBA function.Vlookup debogage et aide sur une boucle
    Bonjour, comme j'effectue un traitement sur une BDD de 36700 lignes il faut que je passe à la programmation VBA car excel commence à me ralentir.
    Je souhaite effectuer une fonction recherchev simple telle que mon code VBA est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    With Sheets("drives_parsed")
        .Range("G5:G1333").Value = WorksheetFunction.VLookup(.Range("D5:D1333").Value, Sheets("COM").Range("B37;B36700"), 2, False)
    End With
    End Sub
    Néanmoins il y a une erreur que je n'arrive pas à déboguer, avez vous une idée?

    Ensuite je souhaite faire une boucle qui me permettrait d'enchainer un traitement tel que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    With Sheets("drives_parsed")
        .Range("G5:G1333").Value = WorksheetFunction.VLookup(.Range("D5:D1333").Value, Sheets("COM").Range("B37;B36700"), 2, False)
    End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    With Sheets("drives_parsed")
        .Range("H5:H1333")   'on décalle d'une colonne
    
    .Value = WorksheetFunction.VLookup(.Range("D5:D1333").Value, Sheets("COM").Range("B37;B36700"), 3, False) ''on décalle d'une colonne
    End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option explicit
    Sub test()
    With Sheets("drives_parsed")
        .Range("I5:I1333").Value = WorksheetFunction.VLookup(.Range("D5:D1333").Value, Sheets("COM").Range("B37;B36700"), 4, False)
    End With
    End Sub
    
    
    '................................ect jusqu'à EP (soit colonne 147) pour la feuille "drive_parsed" et 147 pour le n° de colonne de la fonction .Vlookup pour la feuille ("com")

    Ce qui equivaut en excel à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INDEX(COM!D$37:D$36700;EQUIV($D$5:$D$1333;COM!$B$37:$B$36700;0))))

    Voilà je vous remercie par avance pour me donner des pistes.
    Jérémy

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Certes il y a une erreur mais encore... Nous ne pouvons pas deviner ton erreur si tu ne nous en dis pas plus.

    Pour résoudre ton erreur utilise l'enregistreur de macro. Tu refais ta procédure et tu auras un code sans erreur.

    Pour le reste je pense que tu peux adapter le code de ce post :

    http://www.developpez.net/forums/d14.../matrices-vba/

    Si tu as besoin n'hésites pas.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 907
    Points : 28 882
    Points
    28 882
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Lorsque tu écris
    Néanmoins il y a une erreur que je n'arrive pas à déboguer, avez vous une idée?
    Il serait intéressant voir indispensable que tu communiques le n° et le message de l'erreur ainsi que le n° de la ligne où cela s'est produit.
    Toutefois pour ton premier code comme le nombre de lignes est insignifiant, il est relativement facile d'imaginer que l'erreur à eu lieu à la ligne 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("G5:G1333").Value = WorksheetFunction.VLookup(.Range("D5:D1333").Value, Sheets("COM").Range("B37;B36700"), 2, False)
    On ne peut pas renvoyer le résultat d'une formule dans une plage de cellules mais dans une seule cellule (voir Range("G5:G1333").Value=)
    Dans la formule VLookup également il y a un souci. Le premier argument de la formule doit être la référence à une seule cellule et le deuxième argument n'est pas non plus correct Range("B37;B36700") et forcément le 3ème argument (la constante 2) n'est pas non plus correct puisque tu n'as pas plusieurs colonnes dans le tableau que tu références
    Connais-tu la syntaxe de la formule RECHERCHEV ?
    Utilise l'enregistreur de macros pour commencer à programmer
    [EDIT]
    A lire Fonctions Excel à la loupe : N°1 - RECHERCHEV()
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Rebonjour,

    Philippe, l'erreur ne vient-elle pas aussi du fait qu'il manque un "Application" dans le code?

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 907
    Points : 28 882
    Points
    28 882
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    l'erreur ne vient-elle pas aussi du fait qu'il manque un "Application" dans le code?
    Non, ce n'est pas obligatoire, cette ligne de code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox WorksheetFunction.Count(Range("D2:D5"))
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2013] Besoin d'aide sur une boucle en vba dans excel
    Par ppfun dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2014, 20h25
  2. aide sur une boucle
    Par olivverte dans le forum Excel
    Réponses: 11
    Dernier message: 15/11/2013, 16h43
  3. Aide sur une boucle
    Par jackborogar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2012, 15h55
  4. Aide sur une boucle infinie
    Par willyol3 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2010, 09h47
  5. Aide sur une boucle for
    Par Kemanke dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 11/12/2008, 14h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo