Accueil
On Error Resume Next
On Error Goto Etiquette
Exemple
Sans l'instruction On Error, en cas d'erreur lors de
l'exécution d'un programme, l’éxécution
du programme est stoppé.
On Error Resume
Next
Provoque la poursuite du programme à l'instruction
qui suit celle où s'est produite l'erreur.
Resume provoque l'éxécution de l'instruction où s'est
produite l'erreur.
Resume étiquette provoque la poursuite du programme
à l'étiquette spécifiée.
La variable Err.number donne le numéro de l'erreur.
La variable Err.description donne le message d'erreur
On Error Goto 0 désactive la gestion d'erreur.
On Error Resume Next ' Si erreur, reprendre
à l'instruction suivante
Kill "fich.txt"
MsgBox Err.Description ' Message d'erreur
Select Case Err.Number
Case 53
MsgBox "Fichier Inconnu"
Case 55
MsgBox "Fichier ouvert"
Case 0
MsgBox "Sup effectuée"
End Select
On Error GoTo 0 ' Annule la gestion d'erreur
On Error Goto étiquette
Avec l'instruction On Error Goto étiquette,
il y a branchement à l'étiquette spécifiée.
Error no_erreur permet de simuler l'apparition
d'une erreur.
Exemple:
Sur cet exemple, si une erreur n'a pas été
prévue, le programme enregistre dans un onglet LOG le code
erreur puis stoope l'éxécution du programme.
- OnError
-
Sub essai()
'....
'....
On Error Resume Next ' si erreur, continuer (on va
traiter l 'erreur si on la reconnaît)
onglet = "Toto"
Sheets(onglet).Select
Select Case Err.Number
Case 9
Sheets.Add after:=Sheets(Sheets.Count)
' l'onglet Toto n'existe pas. On le crée
ActiveSheet.Name = onglet
Case Is > 0
GoTo FinProg
End Select
On Error GoTo FinProg ' Si erreur, aller à
finProg pour erreursnon prévues.
'suite du pgm
'....
Workbooks.Open ("yyyyyy.xls") ' Ce fichier
n'existe pas. On a oublié de traiter cette erreur
End
FinProg:
MsgBox "Erreur non prévue"
Sheets("log").[A65000].End(xlUp).Offset(1, 0) =
Environ("Username")
Sheets("log").[A65000].End(xlUp).Offset(0, 1) =
Now
Sheets("log").[A65000].End(xlUp).Offset(0, 2) =
Err.Number
Sheets("log").[A65000].End(xlUp).Offset(0, 3) =
Err.Description
ActiveWorkbook.Save
'ActiveWorkbook.Close
End Sub
Dans la feuille LOG, on obtient:

|