Boucle sur [On Error GoTo...] et [On Error GoTo 0]

Bonjour le forum,

Je débute encore en gestion des erreurs.

Dans un do while loop je vais chercher une valeur avec un fonction Match, or il arrive que le code recherché ne soit pas trouvé, ce qui est d'ailleurs normal, ayant un fichier non exhaustif.

Je souhaitais faire poursuivre le programme dans cette situation. J'ai donc mis un traitement des erreurs sur le type 13 On Error GoTo gesterr, mais je ne souhaite pas que ce traitement s'applique au reste de la boucle je désactive donc celui-ci juste après On Error GoTo 0 et à chaque nouveau tour exécuté par la boucle rebelote j'active et désactive.

Or il semble qu'une fois la première désactivation faite, le retraitement ne fonctionne plus du tout. J'ai à nouveau des messages d'erreur 13 sur la ligneuf = .Cells(Application.Match(Cells(l, 4).Value, .Columns(2), 0), 1).Value

On Error GoTo 0 désactive le traitement des erreurs définitivement tant que l'on ne sort pas de la procédure ?

Je vous remercie !!!

Do While IsEmpty(Cells(l, 4).Value) = False
    With Sheets("CALCUL")
        '---------------------------------
        On Error GoTo gesterr
        uf = .Cells(Application.Match(Cells(l, 4).Value, .Columns(2), 0), 1).Value
        On Error GoTo 0
        mode = ws_ficom.Cells(Application.Match(uf, ws_ficom.Columns(1), 0), 29).Value
        '---------------------------------
        Select Case mode
        Case "HC": Cells(l, c + 1).Value = Cells(l, c).Value * HC
        Case "HS", "HJ", "S": Cells(l, c + 1).Value = Cells(l, c).Value * HS
        End Select
        '---------------------------------
    End With
uf_sv:
    l = l + 1
Loop

gesterr:
Select Case Err.Number
Case 13: GoTo uf_sv
Case Else: Stop
End Select

bonjour,

remplace

Case 13: GoTo uf_sv

par

Case 13: resume uf_sv

Haha mais qu'est ce que vous êtes bons !!!

Merci beaucoup h2so4 !

Bon samedi !

Bonjour, bonjour !

Soit dit en passant, On Error inutile en utilisant la fonction IsError pour contrôler la variable résultat de type Variant du Match

Je ne sais pas ce qui est le plus rapide entre passer ma variable uf en variant et la tester avec iserror (c'est ce que je faisais jusqu'à présent) ou la laisser en integer et la faire passer dans le traitement des erreurs...

Je n'ai jamais testé, cela doit être du kif-kif ! Mais j'ai tendance à éviter On Error

Vérifier en utilisant la fonction Timer

Oui, du moins çà doit l'être pour mon petit fichier.

Je vais sortir le timer pour les deux et j'enverrai le résultat sur le forum (pas besoin de round si l'on souhaite voir une différence)

edit - Je viens de timer et les deux methodes (traitement des erreurs et test sur variant) prennent exactement autant de temps soit dans mon cas 0,015625 secondes !

Rechercher des sujets similaires à "boucle error goto"