WorksheetFunction.VLookup pb

Résolu/Fermé
yumat - 17 juin 2020 à 09:32
 yumat - 17 juin 2020 à 14:31
Bonjour,

Pour éviter les boucles, j'utilise WorksheetFunction.VLookup. Impécable! Sauf que, sauf que si l'élément recherché n'est pas dans la liste, la macro passe en bug avec erreur d'éxécution 1004.
Une solution?
Merci

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
17 juin 2020 à 10:49
Bonjour,

Utiliser, au préalable, WorksheetFunction.CountIf :
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheetfunction.countif
1
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
17 juin 2020 à 14:14
Tu testes, d'abord, s'il y a 15 dans ta colonne R, grâce à CountIf...
Simplement :
Sub essai()
Dim numligne As Long
If WorksheetFunction.CountIf(Range("R75:R110"), 15) > 0 Then
    numligne = WorksheetFunction.VLookup(15, ActiveSheet.Range("R75:U110"), 4, False)
Else
    MsgBox "15 n'est pas trouvé en colonne R"
End If
End Sub

1
désolé pijaku mais en me rendant à cette adresse je ne vois absolument pas comment procéder!!!
voila la ligne de code :
numligne = WorksheetFunction.VLookup(15, ActiveSheet.Range("R75:U110"), 4, False)

si le nb 15 n'est pas dans la liste j'ai l'erreur
Peux tu me corriger stp
Un grand merci
0
Et oui ............ comme tjrs pijaku tu es un génie !!!!!
Cela marche admirablement bien. Si j'ai bien compris je place le contenu de ta macro essai avant ma recherche. Si le N° existe, je continue autrement msgbox d'avertissement et je quitte.

Bon c'est décidé malgré mes 80 ans, quand je serais grand je ferais le même métier que toi c'est tellement beau (mdr)
Un grand merci pijaku tu ne peux t'imaginer le service que tu viens de me rendre.
Je vais pouvoir m'endormir sereinement
Bonne journée et, au risque de me répéter, un grand merci à toi
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
17 juin 2020 à 14:28
En fait, dans ta macro, remplace ta ligne de VLookup par :

If WorksheetFunction.CountIf(Range("R75:R110"), 15) > 0 Then
    numligne = WorksheetFunction.VLookup(15, ActiveSheet.Range("R75:U110"), 4, False)
Else
    MsgBox "15 n'est pas trouvé en colonne R"
End If
0

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

Posez votre question
effectivement !!!! je n'avais fait qu'un essai
Bien je modifie mon prg en conséquence
Félicitations pour ta réactivité et, bien sûr, encore merci à toi
0