On Erreur Go To dans une boucle : l'erreur n'est repérée qu'une seule fois

Dorothee_G

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin de votre aide pour faire en sorte que mon erreur soit prise en compte à chaque tour de boucle et non qu'une seule fois.
L'erreur se déclenche lorsque la Vlookup ne trouve pas la valeur_cherchée.

Voici mon programme, en espérant que vous pourriez m'aider :

Sub blabla()

On Error GoTo MyErrorHandler:

Dim valeur_cherchée As String
Workbooks.Open Filename:="\\...Classeur2"
Workbooks("Classeur1").Worksheets("Feuil1").Activate
Range("A5").Select
fin = Range(Selection, Selection.End(xlDown)).Cells.Count + 4

For i = 5 To fin
valeur_cherchée = Cells(i, 57).Value
If Cells(i, 57).Value <> "" Then
Workbooks("Classeur2").Worksheets("Feuil1").Activate
temp = Application.WorksheetFunction.VLookup(valeur_cherchée, Worksheets("Feuil1").Range("A2:B500"), 2, False)
Workbooks("Classeur1").Worksheets("Feuil1").Activate
Cells(i, 61).Value = temp


MyErrorHandler:
If Err.Number = 1004 Then
MsgBox ("Vérifiez que l'orthographe : " & valeur_cherchée & " est identique à celle du fichier : Classeur2")
Workbooks("Classeur1").Worksheets("Feuil1").Activate
End If
End If
Next i

Workbooks("Classeur2").Close False

End Sub



Je vous remercie pour votre aide.
 

Dranreb

XLDnaute Barbatruc
Re : On Erreur Go To dans une boucle : l'erreur n'est repérée qu'une seule fois

Bonjour

Normalement un ErrorHandler se met tout à la fin d'une procédure, derrière un Exit Sub, et comporte un Resume Next s'il faut pouvoir reprendre l'exécution
Utilisez plutôt On Error Resume Next ce sera plus facile.
 

Pierrot93

XLDnaute Barbatruc
Re : On Erreur Go To dans une boucle : l'erreur n'est repérée qu'une seule fois

Bonjour,

perso j'utiliserais plutôt la méthode "Find" native dans vba qui permet de gérer plus facilement si la valeur recherchée est trouvée ou pas...

bonne journée
@+
 

tototiti2008

XLDnaute Barbatruc
Re : On Erreur Go To dans une boucle : l'erreur n'est repérée qu'une seule fois

Bonjour à tous,

il faut utiliser Resume pour pouvoir prendre en compte les erreurs suivantes
Par exemple :

Code:
Sub test()
Dim i As Long
On Error GoTo errH
    For i = 1 To 10
        Err.Raise 1
suite:
        'autres instructions
errH:
        If Err.Number = 1 Then
            MsgBox i
            Resume suite
        End If
    Next i
On Error GoTo 0
End Sub
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
423
Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
312 160
Messages
2 085 837
Membres
102 998
dernier inscrit
billABDELL