Re: boucle sur WorksheetFunction.VlookUp
Salut Loulou, Chris, Coyote, le Forum
J'ai un peu regardé ce fil et si je comprends bien ton problème Loulou, c'est que tu utilises VlookUp dans une boucle, ce qui est assez inhabituel, mais en testant rapidement on peut s'en sortir en maîtrisant un petit peu les erreurs générées par cette fonction quand elle ne retourne rien (ce qui arrive dans une boucle)
Ceci dit, je ne suis absolument pas certain d'avoir compris ce que tu veux, mais c'est juste pour faire avancer le schmilblic !
Ce que j'ai compris :
3 feuilles
1 = "Calendrier", contenant la base de données sur deux colonnes ("I" & "J" sur 350 lignes)
2 = "Data" (je l'invente lol) qui contient en colonne ("C") les valeurs à rechercher dans la base "Calendrier" (on ne connait pas le nombre de lignes)
3 = "Resultat" (je l'invente aussi lol) qui devrait retourner une liste en colonne "D" (en partant de D2), des valeur retrouvées par le VloopUp entre "Data" et "Calendrier"
Donc voici ce que le code donnerait :
Sub ObtenirNomLoulou()
Dim x As Byte
Dim PC As Integer, i As Integer
Dim Table As Range
Dim MonBureau As String
PC = Sheets("Data").Range("C65536").End(xlUp).Row
Set Table = Sheets("Calendrier").Range("I2:J350")
x = 2
For i = 2 To PC
On Error Resume Next
MonBureau = Application.WorksheetFunction. _
VLookup(Sheets("Data").Cells(i, 3), Table, 2, False)
If Err = 1004 Then GoTo Suite
Sheets("Resultats").Cells(x, 4) = MonBureau
x = x + 1
Suite:
Next
End Sub
Vous me direz que ce n'est pas très orthodoxe, mais je suis parti de la macro de Loulou et, finalement çà à l'air de tourner assez raisonnablement vite (testé avec 5000 données en feuille "Data").
Voilà, en espérant ne pas être totalement en dehors de la plaque ;-)
Bonne soirée à tout le monde
@+Thierry
PS : on notera aussi les déclarations de Variables car le fait d'écrire :
Dim Toto, Zaza, Lulu as Byte
équivaut à déclarer uniquement Lulu as Byte tandis que Zaza et Toto sont Variants !