While et Vlookup [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 13-12-2005 à 06:34:01
bonjour,
ça devrait donner :
Code :
|
Ne pas oublier de remplacer Worksheets("TaBase" ) par le nom de ta feuille source...
A+
Marsh Posté le 13-12-2005 à 11:59:49
Merci beaucoup pour cette réponse matinale fonctionnelle !!!!!
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 ...
Marsh Posté le 13-12-2005 à 12:25:43
Bah !
ça se discute, mais je ne pense pas énormément car la boucle se fait sur
While Cells(i, 20) <> ""
et non pas sur VLOOKUP.
Si on se base sur le fait que le résultat de ton VLOOKUP à une valeur moyenne de 5000, à mon avis la différence de traitement ne doit pas excéder 4 secondes pour une colonne 20 de 10000 lignes également
Enfin c'est le résultat que je trouve sur 10000 test VLOOKUP aléatoires sur 10000 lignes...
A+
Marsh Posté le 14-12-2005 à 11:40:21
exact, la différence n'est pas visible, ici le vlookup est instantané.
Pour que la selection du rechercherV prenne toutes les cellules, ont me dit :
à al place du range .Range("A3:K621" ) de mettre .Range.SpecialCells(xlCellTypeLastCell)
mais j'obtiens une erreur d'exécution 450 : Nombre d'arguments incorrect ou affectation de propriété incorrecte.
Une idée ?
Marsh Posté le 14-12-2005 à 19:16:37
En général on utilise SpécialCell pour déterminer la dernière ligne écrite dans la feuille active.
On l'utilise de cette manière :
Code :
|
appliqué à ton code ça doit donner quelque chose comme :
Code :
|
Ok ?
Marsh Posté le 15-12-2005 à 13:18:28
Ça fonctionne super merci !
Mais s'il y a un ligne vide quelque part avant la derniere ligne, le range s'arrête où ?
Marsh Posté le 16-12-2005 à 22:07:58
Ben,
A la dernière ligne je pense... Quoique je n'utilise guère cette méthode effectivement un peu floue.
On utilise plutot cette méthode beaucoup plus précise pour déterminer la dernière ligne non vide d'une colonne:
Code :
|
(ici la 1ère colonne)
A+
Marsh Posté le 07-02-2006 à 22:47:17
Aie, cela ne fonctionne plus,
j'ai integré la feuille "tabase" dans le fichier excel.
donc je mets :
Code :
|
et j'ai une erreur 1004 à la ligne de code 6
impossible de lire la proriété VLookup de la classe WorksheetFunction
(je suis passé d'Excel XP à Excel 2002 )
Marsh Posté le 07-02-2006 à 23:45:12
j'ai l'impression que ça ne cherche pas dans la bonne worksheet
Marsh Posté le 08-02-2006 à 07:39:28
Bonjour,
Ben, tout dépend de la feuille cible et de la feuille source
La feuille "source" du Vlookup est "adressée par :
With Worksheets("TaBase" ) tous les ".Range se réfèrent à "la source"
Les autres Range (sans le "." ) se réfèrent à la FeuilleActive au moment du lancement de la macro.
Le cas échéant, il conviendrait de préciser la feuille cible.
While Worksheets("XXXX" ).Cells(i, 20)
Worksheets("XXXX" ).Cells(i, 37) = Application.WorksheetFunction.VLookup(Worksheets("XXXX" ).Cells(i, 20)....
(à vue de nez !)
Sinon, je ne vois pas...
Une piste, pourquoi dans :
...Range("A3:V" & k), 11, False)
avoir mis "V" si tu te réfères toujours à la colonne "K" (11) ?
En bonne logique V = 22
A+
Marsh Posté le 08-02-2006 à 18:43:59
bonjour et merci galopin01,
Le resultat de la rechercheV est dans la feuille "D1_simulact" (active au lancement de la macro = la feuille cible) colonne S (19) et valeur à chercher en colonne B (2) de la même feuille
La valeur à trouver est dans la feuille "Approv" ( source si je respecte tes notations) colonne V (22)
Code :
|
toujours la même erreur
Marsh Posté le 08-02-2006 à 22:51:37
Tu es bien dans un Module Standart (Module1...) ?
Marsh Posté le 11-02-2006 à 14:45:14
ouf !
J'ai un élément d'explication :
En fait ça fonctionne mais s'il ne trouve pas la valeur correspondante, au lieu de mettre un #N/A ça bug comme précedemment
exemple tout bete :
http://cjoint.com/data/cloPISzU47.htm
Une idée pour que ça fonctionne ?
Rechercher si la valeur recherché est présente dans l'autre feuille si oui faire le recherche V sinon afficher " pas de valeur" ?
Est-ce une bonne piste ?
Marsh Posté le 11-02-2006 à 16:46:08
bonjour,
pour ton classeur démo remplace la ligne VLookup par :
Code :
|
Marsh Posté le 12-12-2005 à 18:10:24
Lu all
Je veux faire une recherche V en colonne 37 tant que la colonne 20 n'est pas vide.
Je décalre 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 :
mais j'ai une erreur de compilation syntaxe
Une soluce ?
Merci bien