Problème boucle VBA avec vlookup - VB/VBA/VBS - Programmation
Marsh Posté le 20-12-2013 à 18:35:53
Bonjour,
à première vue plein de choses ne me plaisent pas (un bon code est sans Select répété),
mais avant de chercher à décoder, j'ai plutôt besoin de savoir en langage courant le but détaillé de
cette procédure, pour voir si tout de même c'est la bonne voie ou en proposer une autre,
sauf si c'est dans un cadre scolaire sous contrainte d'un cours en particulier …
Marsh Posté le 20-12-2013 à 18:44:28
Au lieu de WorksheetFunction. je préfère utiliser Application. et tester le résultat
avec la fonction IsError évitant ainsi de recourir à l'instruction On Error …
Marsh Posté le 19-12-2013 à 23:08:19
Bonjour,
je viens de débuter en vba et je rencontre déjà quelques souci avec mon petit programme.
J'ai donc créé le programme suivant :
Sub Macro1()
Range("h4" ).Select
For i = 1 To 10 'Debut de la boucle'
If ActiveCell.Value = "" Then 'Si cellule vide alors
On Error GoTo Erreurs 'Si erreur aller directement à la ligne Erreurs:
ActiveCell.Value = WorksheetFunction.VLookup(Range("P1" ), Sheets("OK" ).Range("C:E" ), 2, Faux) 'Rechercher la valeur P1 dans la deuxiéme feuille
ActiveCell.Offset(0, 1).Select 'Colonne suivante
ActiveCell.Value = WorksheetFunction.VLookup(Range("P1" ), Sheets("OK" ).Range("C:E" ), 3, Faux) 'Rechercher la valeur P1 dans la deuxiéme feuille
ActiveCell.Offset(1, -1).Select 'Passer a la ligne suivante
Erreurs:
If Err.Number = 1004 Then
ActiveCell.Value = "KO"
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = "KO"
ActiveCell.Offset(1, -1).Select
End If
Else
ActiveCell.Offset(1, 0).Select
End If
Next
End Sub
Voilà, donc tout ce passe bien tant que le vlookup trouve la valeur recherché. Parlons maintenant de lorsqu'il ne trouve pas la valeur, cela fonctionne sur la premiere ligne, il me met bien "KO" sur les deux colonnes, par contre la ligne suivante me donne une erreur 1004' Impossible de lire la propriété Vlookup de la classe worksheetfunction et la procédure s'arrête. Avec mes maigres connaissance en VBA, je ne comprend pas pourquoi cela me fait ça.
Si cela vous interesse j'ai une copie de mon fichier ici
https://mon-partage.fr/f/gTlDpIgY/ en xlsm et https://mon-partage.fr/f/q6cR3XI5/ en xlm
Merci d'avance pour votre aide.