Problème boucle VBA avec vlookup

Problème boucle VBA avec vlookup - VB/VBA/VBS - Programmation

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 :  
 

Citation :

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.

Reply

Marsh Posté le 19-12-2013 à 23:08:19   

Reply

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 …
 

Reply

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  …
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed