Bonjour,
Le message que tu reçois peut provenir d'une cellule vide.
Tu n'as pas précisé si le message d'erreur était immédiat, premier élément de la boucle, ou pas
[RECTIFICATION]
Ce message provient du fait que la fonction ne trouve pas ce qu'elle cherche, il faut intercepter l'erreur.
Il faudrait aussi ajouter FALSE comme 4ème argument parce-que j'imagine que la première colonne du tableau de recherche n'est pas triée par ordre croissant et que tu ne cherches pas la valeur la valeur la plus proche.
Dans le cas contraire, il faudrait prévoir une première ligne avec comme valeur en première colonne 0 ou une valeur négative inférieure à la valeur à chercher en colonne A.
Bonjour,
Une proposition de code qui renvoie -9999 si la valeur n'est pas trouvée.
1 2 3 4 5 6 7 8 9 10 11 12
| Sub testVlookUp()
Dim Variable As Double
Dim Nbre_Valeurs As Double
Dim ligne As Long
Nbre_Valeurs = ((Cells(1, 3) - Cells(3, 1)) * 48) + 3 'Déterminer le nombre de données à renseigner
For ligne = 2 To Nbre_Valeurs
On Error Resume Next
Variable = Application.WorksheetFunction.VLookup(Cells(ligne, 1), Range(Cells(2, 2), Cells(6, 3)), 2)
If Err.Number Then Variable = -9999
Cells(ligne, 1) = Variable
Next ligne
End Sub |
Cette ligne cherche la valeur la plus proche et pour cela, le tableau doit être trié en ordre croissant sur la première colonne.
Variable = Application.WorksheetFunction.VLookup(Cells(ligne, 1), Range(Cells(2, 2), Cells(6, 3)), 2)
S'il faut chercher la valeur exacte, il y a lieu d'ajouter FALSE
Variable = Application.WorksheetFunction.VLookup(Cells(ligne, 1), Range(Cells(2, 2), Cells(6, 3)), 2, FALSE)
Partager