Gestion des erreurs

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:

 

 

 

 

 

 

 

Exemples

OnError