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.