Function.VLookup Aide please
Bonjour a tous,
Vous m'avez déjà pas mal aider dans mon projet par la lecture des posts précédent et en répondant a quelques questions que je vous ais déjà poser mais la je but et vous m'aiderais probablement a trouver une solution.
Voila. j'ai une grosse base de donnée de + de 30 000 lignes.
et je souhaite faire une recherche verticale sur chaque ligne et sur la 5eme colonne et indiquer dans la colonne 35 le résultat de la recherche. Les donnée de la recherche se trouve sur un autre onglet nommé "DATA".
Jusque la tout va bien.
Sauf qu'une particularité de cette fonction implique que le contenu de 5eme colonne doit nécessairement être présente dans les donnée de l'onglet "DATA".
Sauf que le contenu de la 5eme colonne n'est pas forcement connu car extraite depuis un useform utilisé sur un ordinateur distant.
Du coup si le contenu n'est pas référencée dans "DATA" la recherche ne peut pas se faire et la macro plante.
For i = 6 To Range("A1") + 5
If Cells(i, 5) = "" Then
Cells(i, 36) = "Non Défini"
Else
Cells(i, 36) = WorksheetFunction.VLookup(Cells(i, 5), Sheets("DATA").Range("AB3:AE28"), 2, False)
End If
Nextje veux absolu avoir un résultat exact raison pour laquelle la dernière condition de la fonction est "False"
Ce que je cherche a faire c'est indiquer le résultat de la recherche verticale pour chaque valeur connu (de type numérique) et remplir de vide la 35eme colonne si le contenu de la 5eme colonne n'est pas connu dans la base.
Je ne sais pas si j'ai été clair.
L'idée en faite serait de faire une condition du genre :
For i = 6 To Range("A1") + 5
If Cells(i, 5) = "" Then
Cells(i, 36) = "Non Défini"
Else
If WorksheetFunction.VLookup(Cells(i, 5), Sheets("DATA").Range("AB3:AE28"), 2, False) = True Then
Cells(i, 36) = WorksheetFunction.VLookup(Cells(i, 5), Sheets("DATA").Range("AB3:AE28"), 2, False)
Else
Cells(i, 36) = ""
End If
End If
NextMais j'aurais besoin d'aide pour l’écrire proprement.
Merci d'avance a tous ceux qui se pencheront sur cette question.
@+
Safcot
Bonjour
Une méthode mais sur qu'elle soit la plus propre (mon avis je serai passé par un Find ou un Match)
On Error Resume Next
For i = 6 To Range("A1") + 5
If Cells(i, 5) = "" Then
Cells(i, 36) = "Non Défini"
Else
Cells(i, 36) = ""
Cells(i, 36) = WorksheetFunction.VLookup(Cells(i, 5), Sheets("DATA").Range("AB3:AE28"), 2, False)
End If
Next i
On Error GoTo 0ca marche merci ^^