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

 

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Employé voulant apprendre à automatiser
    Inscrit en
    février 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Employé voulant apprendre à automatiser

    Informations forums :
    Inscription : février 2018
    Messages : 61
    Points : 26
    Points
    26

    Par défaut Problème fonction Vlookup avec VBA

    Bonsoir à tous,

    J'ai un petit soucis sur ma macro, j'aimerai faire un vlookup entre deux feuilles de mon excel,

    En gros j'ai une feuille "Collateral", l'autre s'appelle "Exposure"

    Je voulais faire un Vlookup de la valeur de la colonne A de ma feuille Collateral la chercher entre les colonnes A et D de ma feuille "Exposure" prendre la valeur de la troisième colonne après et mettre le résultat en colonne 6 de ma feuille "Collateral".

    Evidemment le nombre de mes lignes est variable, du coup je suis obligé de mettre le code J'ai essayé les codes suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For l = Sheets("Collateral").Range("A2").End(xlUp).Row To 2 Step -1
    Sheets("Collateral").Cells(l, 6).Value = Application.VLookup(Sheets("Collateral").Cells(l, 1).Value, Sheets("Exposure").Range("A2:D").End(xlUp).Row, 3, False)
     
      Next

    Ainsi que


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'For l = Sheets("Collateral").Range("A2").End(xlUp).Row To 2 Step -1
    'Sheets("Collateral").Cells(l, 6).Value = Application.VLookup(Sheets("Collateral").Cells(l, 1).Value, (Sheets("Exposure").Range(Cells(2, 1), Cells(Rows.Count, 3).End(xlUp))), 3, False)
     
      'Next

    Vous auriez une idée de ce qui coince dans mon code ?

    Merci d'avance,

    Mrmouche

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA, C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    13 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Developpeur VBA, C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 13 071
    Points : 29 337
    Points
    29 337

    Par défaut

    Salut,

    un premier point ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Exposure").Range("A2:D").End(xlUp).Row
    à transformer (en principe) en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Exposure").Range("A2:D" & Sheets("Exposure").Range("A65536").End(xlUp).Row)
    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Employé voulant apprendre à automatiser
    Inscrit en
    février 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Employé voulant apprendre à automatiser

    Informations forums :
    Inscription : février 2018
    Messages : 61
    Points : 26
    Points
    26

    Par défaut

    Bonjour Jean Philippe,

    Merci pour ta réponse, malheureusement la colonne 6 de ma feuille "collateral" qui devait accueillir le résultat de ma fonction vlookup est toujours vide,

    J'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For l = Sheets("Collateral").Range("A2").End(xlUp).Row To 2 Step -1
    Sheets("Collateral").Cells(l, 6).Value = Application.VLookup(Sheets("Collateral").Cells(l, 1).Value, Sheets("Exposure").Range("A2:D" & Sheets("Exposure").Range("A65536").End(xlUp).Row), 3, False)
     
      Next

  4. #4
    Membre expert
    Homme Profil pro
    Responsable des études
    Inscrit en
    juillet 2014
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2014
    Messages : 1 740
    Points : 3 599
    Points
    3 599

    Par défaut

    Citation Envoyé par Jean-Philippe André Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Exposure").Range("A2:D" & Sheets("Exposure").Range("A65536").End(xlUp).Row)
    Bonjour, je voudrais pas me fâcher avec un modérateur mais "Range("A65536").End(xlUp).Row" c'est une mauvaise habitude, depuis 2007 Excel dépasse les 65000 lignes il vaut mieux utiliser Range("A" & rows.count). qui marche pour les fichiers xls et xlsx

    De plus je crois qu'il y a un problème d'initialisation de la boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For l = Sheets("Collateral").Range("A2").End(xlUp).Row To 2 Step -1
    Soit tu pars de A2 et tu vas vers le bas (xldown) (si tu es sur qu'il n'y a pas de vide), soit tu pars de A & rows.count et tu vas vers le haut (xlup)
    Là tu pars de A2 et tu montes donc en A1 donc tu boucles de 1 a 2 step -1 donc il ne fait rien.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Employé voulant apprendre à automatiser
    Inscrit en
    février 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Employé voulant apprendre à automatiser

    Informations forums :
    Inscription : février 2018
    Messages : 61
    Points : 26
    Points
    26

    Par défaut

    Hello,

    Merci beaucoup pour votre aide,

    C'est vrai qu'il s'agissait d'un problème au début de la boucle, mon code fonctionne de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For l = Sheets("Collateral").Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
    Sheets("Collateral").Cells(l, 6).Value = Application.VLookup(Sheets("Collateral").Cells(l, 1).Value, Sheets("Exposure").Range("A2:D" & Sheets("Exposure").Range("A" & Rows.Count).End(xlUp).Row), 3, False)
        Next

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA, C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    13 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Developpeur VBA, C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 13 071
    Points : 29 337
    Points
    29 337

    Par défaut

    Citation Envoyé par halaster08 Voir le message
    Bonjour, je voudrais pas me fâcher avec un modérateur mais "Range("A65536").End(xlUp).Row" c'est une mauvaise habitude, depuis 2007 Excel dépasse les 65000 lignes il vaut mieux utiliser Range("A" & rows.count). qui marche pour les fichiers xls et xlsx
    On ne se fâche pas, tu as tout à fait raison
    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] vba excel: fonction VLOOKUP avec plusieurs résultats
    Par LANGAZOU dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2017, 21h46
  2. Problème fonction perso avec Decaler
    Par stryge63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/02/2008, 09h40
  3. Fonction Solveur avec VBA?
    Par quynhhoa411 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/11/2007, 10h55
  4. problème fonction php avec LAST_INSERT_ID()
    Par carmen256 dans le forum PHP & MySQL
    Réponses: 5
    Dernier message: 07/12/2006, 09h51
  5. Problème fonction random avec linux
    Par fabetvince dans le forum C
    Réponses: 12
    Dernier message: 25/05/2006, 23h45

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