[VBA] Syntaxe du vlookup dans une boucle While

titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007 - 12 déc. 2005 à 20:38
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007 - 13 déc. 2005 à 14:09
Je veux faire une recherche V en colonne 37 tant que la colonne 20 n'est pas vide.


Je déclare la variable i comme ligne, la valeur recherchée est en colonne 20, et la matrice de recherche est dans fichier2.xls (déjà ouvert) de la ligne 3 colonne 1 à la ligne621 colonne 11.

Je tappe ce code :


Code :

<OL id=code1><LI>i 2 'Déclaration de la variable i ligne
<LI>While Cells(i, 20) <> "" 'Tant que ligne i et colonne 20 n'est pas vide
<LI><LI>Cells(i, 37) ActiveCell.FormulaR1C1 VLOOKUP(Cells(i, 20),fichier2.xls!R3C1:R621C11,11,FALSE)
<LI> i = i + 1
<LI>
<LI>Wend
</LI></OL>



mais j'ai une erreur de compilation syntaxe


Une soluce ?
Merci bien

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 déc. 2005 à 09:59
je n'ai pas dans Excel cette formule VLOOKUP...

mais ton code dois ressembler a :

i = 2
Do While Cells(i, 20) <> ""
Cells(i, 37).Activate
ActiveCell.FormulaR1C1 = "=VLOOKUP('" & Cells(i, 20) & "',fichier2.xls!R3C1:R621C11,11,FALSE)"
i = i + 1
Loop
0
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007
13 déc. 2005 à 12:06
'" & Cells(i, 20) & "' provique un bug ...

Avec le code ci-dessous ça focntionne


<OL>
<LI>Sub Test()
<LI>i = 4
<LI>With Workbooks("fichier2.xls").Worksheets("TaBase")
<LI>While Cells(i, 20) <> ""
<LI>Cells(i, 37) = Application.WorksheetFunction.VLookup(Cells(i, 20), .Range("A3:K621"), 11, False)
<LI>i = i + 1
<LI>Wend
<LI>End With
<LI>End Sub
</LI></OL>
Ne pas oublier de remplacer Worksheets("TaBase") par le nom de ta feuille source...

J'aimerais l'améliorer en disant que le range prenne toutes les cellule de"TaBase" car il se peut que des données se trouveront en dessous de la ligne 621 ..

On peut tres bien mettre K10000 mais je pense que ça ralentira l'execution ...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 déc. 2005 à 12:17
a ok, Vlookup n'est pas une formule Excel...
ta syntaxe première etait complètement a l'ouest dit moi...

pour la dernière cellule, tu as tout simplement :
Range.SpecialCells(xlCellTypeLastCell)

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007
13 déc. 2005 à 12:29
Merci
Vlookup pas une formule d'excel ? C'est quoi alors ?

je remplace Range("A3:K621") par Range.SpecialCells(xlCellTypeLastCell) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 déc. 2005 à 12:35
pas une formule, non, une méthode de la classe WorksheetFunction

ok pour le range....

jette un coup d'oeil a l'explorateur d'objects (F2) ca evitera peut etre des questions sur des choses qui sont dans le documentation.

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007
13 déc. 2005 à 14:09
ok,
avec :

i = 2
With Workbooks("Stockfmul.xls").Worksheets("Stockfmul")
While Cells(i, 20) <> ""
Cells(i, 37) = Application.WorksheetFunction.VLookup(Cells(i, 20), .Range.SpecialCells(xlCellTypeLastCell), 11, False)
i = i + 1
Wend

J'ai une erreur d'exécution 450 : Nombre d'arguments incorrect ou affectation de propriété incorrecte.
0
Rejoignez-nous