Visual Basic for Applications:
Gestion des erreurs

Comment faire :

Dans VBA, la gestion des erreurs est typiquement mise en œuvre à l’aide de l’instruction On Error qui instruit VBA sur la marche à suivre lorsqu’une erreur se produit. Les stratégies de gestion des erreurs les plus courantes impliquent l’utilisation de On Error GoTo étiquette, On Error Resume Next, et On Error GoTo 0.

Exemple 1 : Utilisation de On Error GoTo

Cette approche vous permet de diriger le programme vers une section spécifique du code, étiquetée immédiatement après la rencontre d’une erreur.

Sub ErrorHandlerExample()
    On Error GoTo ErrHandler
    Dim intDivision As Integer

    intDivision = 5 / 0 ' Cela va causer une erreur de division par zéro

    Exit Sub
ErrHandler:
    MsgBox "Une Erreur est Survenue : " & Err.Description, vbCritical, "Erreur!"
    Resume Next
End Sub

Dans cet exemple, toute erreur d’exécution déclenchera le saut vers ErrHandler, affichant un message d’erreur puis continuant avec la ligne suivante après l’erreur.

Exemple 2 : Utilisation de On Error Resume Next

Cette stratégie instruit VBA de continuer à exécuter la ligne de code suivante même si une erreur se produit, ce qui peut être utile pour les erreurs considérées comme inoffensives ou lorsque vous prévoyez de gérer l’erreur plus tard dans l’exécution.

Sub ResumeNextExample()
    On Error Resume Next
    Dim intDivision As Integer
    intDivision = 5 / 0 ' Cela ne va pas arrêter le programme ; l'erreur est ignorée
    
    ' Vérifier si une erreur s'est produite
    If Err.Number <> 0 Then
        MsgBox "Une Erreur est Survenue : " & Err.Description, vbExclamation, "Erreur Gérée"
        ' Réinitialiser l'erreur
        Err.Clear
    End If
End Sub

Dans ce cas, le programme ne s’arrête pas sur l’erreur ; il vérifie si une erreur s’est produite, la gère si c’est le cas, puis efface l’erreur.

Approfondissement

Historiquement, la gestion des erreurs dans les langages de programmation a évolué de simples instructions goto à des mécanismes plus sophistiqués comme les exceptions dans des langages tels que Java et C#. Bien que la gestion des erreurs de VBA ne soit pas aussi puissante ou flexible que la gestion moderne des exceptions, elle remplit sa fonction dans le contexte de l’application du langage à l’automatisation des tâches dans les environnements Microsoft Office.

La principale limitation de la gestion des erreurs de VBA réside dans son approche quelque peu encombrante et manuelle, nécessitant un placement soigneux du code de gestion des erreurs et une compréhension claire du flux d’exécution. Les langages de programmation modernes offrent généralement des solutions plus élégantes, comme les blocs try-catch, qui gèrent automatiquement le flux vers le code de gestion des erreurs sans nécessiter de vérifications manuelles ou de sauts dans l’exécution du code.

Malgré ces limitations, les mécanismes de gestion des erreurs de VBA sont adaptés à la plupart des tâches d’automatisation et, lorsqu’ils sont utilisés correctement, peuvent réduire de manière significative la probabilité que des erreurs non gérées posent des problèmes aux utilisateurs. De plus, comprendre la gestion des erreurs de VBA peut fournir des aperçus sur les paradigmes de programmation plus anciens et l’évolution des stratégies de gestion des erreurs dans le développement logiciel.