On Error GoTo line | Valide la routine de gestion d'erreur commençant à la ligne indiquée dans l'argument line. L'argument line peut être une étiquette de ligne ou un numéro de ligne. En cas d'erreur d'exécution, le contrôle est transmis au point indiqué dans l'argument line, ce qui valide le gestionnaire d'erreurs. |
On Error GoTo Erreur1
' . . .
Suivant1:
' . . .
On Error GoTo Erreur2
' . . .
Suivant2:
. . .
Exit Sub
Erreur1: Resume Suivant1
Erreur2: Resume Suivant2
End Sub
Sub Test()
Dim i As Integer
Dim c As Range
Worksheets("Feuil1").Activate
On Error GoTo ErrorHandler
For Each c In Cells.SpecialCells(xlCellTypeFormulas, 23) ' contrôle des formules
If i = 0 Then MsgBox ("test1 ok")
'
Next c
i = 0
On Error GoTo ErrorHandler
For Each c In Cells.SpecialCells(xlCellTypeConstants, 23) ' contrôle des constantes
If i = 0 Then MsgBox ("test2 ok")
'
Next c
Exit Sub
ErrorHandler:
MsgBox "Erreur: " & Err.Number & vbCrLf & Err.Description
If i = 0 Then i = 1
'Reprend l'exécution au niveau de la ligne à l'origine de l'erreur.
Resume Next
End Sub
Sub test()
Dim c As Range
Worksheets("Feuil1").Activate
On Error Resume Next
For Each c In Cells.SpecialCells(xlCellTypeFormulas, 23) ' contrôle des formules
If Err > 0 Then Err.Clear: GoTo suivant
MsgBox ("test1 ok")
Next c
suivant:
For Each c In Cells.SpecialCells(xlCellTypeConstants, 23) ' contrôle des constantes
If Err > 0 Then Err.Clear: GoTo fin
MsgBox ("test2 ok")
Next c
fin:
End Sub
Re,
elle est bien gérée avec on error goto, et on le voit sur la 1ère erreur où je me branche bien sur l'étiquette.
Et je ne veux pas utiliser on error resume next puisque ce n'est pas le fonctionnement voulu (je ne veux pas continuer à la suite mais bien sauter des instructions pour continuer le traitement).
aide excel sur on error goto :
Seulement ça ne marche pas sur la 2nde erreur...
On Error GoTo line
Valide la routine de gestion d'erreur commençant à la ligne indiquée dans l'argument line. L'argument line peut être une étiquette de ligne ou un numéro de ligne. En cas d'erreur d'exécution, le contrôle est transmis au point indiqué dans l'argument line, ce qui valide le gestionnaire d'erreurs.
eric
Un gestionnaire d'erreurs est "validé" lorsqu'il a été désigné par une instruction On Error ; le gestionnaire d'erreurs "actif" est un gestionnaire validé qui traite une erreur. Si une erreur se produit alors qu'un gestionnaire d'erreurs est actif (c'est-à-dire entre la ligne où survient une erreur et une instruction Resume, Exit Sub, Exit Function ou Exit Property), le gestionnaire d'erreurs de la procédure en cours ne peut gérer l'erreur. Le contrôle revient à la procédure appelante. Si la procédure appelante possède un gestionnaire d'erreurs validé, il est activé afin de gérer l'erreur. Si le gestionnaire d'erreurs de la procédure appelante est également actif, le contrôle est restitué aux procédures appelantes antérieures jusqu'à ce qu'un gestionnaire d'erreurs validé mais inactif soit trouvé. Si aucun gestionnaire d'erreurs validé et inactif n'est trouvé, l'erreur est fatale à l'emplacement où elle s'est produite. Chaque fois que le gestionnaire d'erreurs repasse le contrôle à une procédure appelante, cette procédure devient la procédure en cours. Lorsqu'une erreur est gérée par un gestionnaire d'erreurs dans n'importe quelle procédure, l'exécution reprend dans la procédure en cours à l'emplacement désigné par l'instruction Resume.
CordialementSi une erreur se produit alors qu'un gestionnaire d'erreurs est actif (c'est-à-dire entre la ligne où survient une erreur et une instruction Resume, Exit Sub, Exit Function ou Exit Property), le gestionnaire d'erreurs de la procédure en cours ne peut gérer l'erreur.
On Error GoTo 0 | Invalide dans la procédure en cours tout gestionnaire d'erreurs validé. |