titibobo2
Messages postés46Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention28 novembre 2007
-
12 déc. 2005 à 20:38
titibobo2
Messages postés46Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention28 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>
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
titibobo2
Messages postés46Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention28 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 ...
titibobo2
Messages postés46Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention28 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.