Gestion des erreurs VBA Excel

La gestion des erreurs est un mécanisme très utile et significatif pour les langages de programmation comme VBA. Le contrôle ou la prévention des erreurs est un aspect de la gestion des erreurs, ce qui signifie prendre des mesures efficaces et significatives dans un script VBA pour éviter l'occurrence d'un message contextuel d'erreur.

Différents types d'erreurs dans VBA

  1. Erreur de syntaxe ou erreur d'analyse
  2. Erreur de compilation ou de compilation
  3. Erreur d'exécution
  4. Erreur logique

Les erreurs ci-dessus peuvent être corrigées à l'aide du débogage mentionné ci-dessous et de différentes déclarations «en cas d'erreur» insérées entre un code.

En cas d'erreur Reprendre ensuite

En cas d'erreur Aller à 0

En cas d'erreur Aller à

En cas d'erreur Aller à -1

Gestion des erreurs VBA à l'aide de différentes instructions «ON ERROR»

Vous pouvez télécharger ce modèle Excel de gestion des erreurs VBA ici - Modèle Excel de gestion des erreurs VBA

Exemple # 1 - Erreurs de compilation VBA

Lorsqu'il y a une erreur dans une instruction ou la syntaxe du code VBA, lorsque vous saisissez un code par erreur, il sera mis en surbrillance en rouge en fonction des options de réglage dans les outils (si vous avez sélectionné Vérification de la syntaxe automatique).

Une boîte de message contextuelle d'erreur de compilation s'affiche lorsque vous exécutez le code avec une syntaxe incorrecte.

Code:

 Sous SYNTAX_ERROR () MsgBox c'est mon premier programme End Sub 

"ERREUR DE COMPILATION: VARIABLE NON DÉFINIE" est l'erreur la plus courante qui apparaît sous forme de message contextuel. lorsque la variable de référence n'est pas définie, cette erreur se produit.

Code:

 Sub VBA_FORMAT1 () A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

Dans l'exemple ci-dessus, je n'ai pas déclaré le type de variable en tant que chaîne par conséquent, cette erreur se produit. Donc, je dois déclarer une variable comme Dim A As String.

Code:

 Sub VBA_FORMAT1 () Dim A As String A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

Exemple # 2 - Erreur d'exécution VBA

Lorsqu'une instruction mathématique ou un terme impossible est présent dans une instruction, cette erreur d'exécution se produit.

Code:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Exemple # 3 - Erreurs logiques ou bogues VBA

Ces erreurs sont très difficiles à suivre, ni ne seront mises en surbrillance ni un message d'erreur contextuel n'apparaîtra. cela entraînera des actions inattendues et des résultats incorrects.

Exemple: lorsque deux variables sont présentes dans le code, il peut en contenir une incorrecte. Dans ce cas, une erreur logique se produit.

Comment prévenir les erreurs dans VBA?

Voyons comment empêcher les différents types d'erreurs ci-dessus dans VBA Excel.

Étape 1: Pour ouvrir une fenêtre de l'éditeur VB Sélectionnez ou cliquez sur Visual Basic dans le groupe Code sous l'onglet Développeur ou vous pouvez directement cliquer sur la touche de raccourci Alt + F11 .

Étape 2: Pour créer un module vierge, sous les objets Microsoft Excel, cliquez avec le bouton droit sur la feuille 1 (VB_ERROR HANDLING) et insérez le module afin qu'un nouveau module vierge soit créé.

Gestion des erreurs VBA avec l'option de débogage

Il est préférable de compiler du code avant de l'exécuter. Pour suivre la compilation, les étapes ci-dessous doivent être suivies. Dans la barre d'outils du menu VB, sous l'option Debug, nous devons sélectionner un projet VBA de compilation. Lorsque vous cliquez dessus, il vérifie le code étape par étape, une fois qu'il trouve l'erreur, il le met en surbrillance et un message contextuel apparaît, vous devez donc le corriger. une fois corrigé, vous devez compiler pour trouver l'erreur suivante dans le code.

Remarque: À l'aide de l'option de compilation, nous ne pouvons corriger que l'erreur de compilation et de syntaxe.

Gestion des erreurs VBA à l'aide de différentes instructions «ON ERROR»

1. En cas de reprise d'erreur après

Ici, l'erreur sera ignorée et le code avancera.

Dans l'exemple mentionné ci-dessous, 6 ne peut pas être divisé par zéro, si vous l'exécutez sans entrer l'instruction On Error Resume Next, l'erreur d'exécution mentionnée ci-dessous se produit.

Code:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Si On Error Resume Next est entré en haut du code après l'instruction Sub, il ignore l'erreur d'exécution et passe à l'instruction suivante, ce qui entraîne la sortie de 6/2, c'est-à-dire 3 (boîte de message contextuelle avec le résultat).

Code:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub 

2. Sur erreur GoTo 0 et erreur GoTo -1

'On Error GoTo 0' arrêtera le code sur la ligne spécifique qui provoque l'erreur et affiche une boîte de message qui décrit ou indique l'erreur.

Code:

 Sub onError_Go_to_0 () On Error GoTo 0 Tuez la plage "C: TempFile.exe" ("A1"). Value = 100 / "PETER" End Sub 

Habituellement, il présente un comportement de vérification d'erreur par défaut, il est important lorsqu'il est utilisé avec «On Error Resume Next».

Habituellement, vous pouvez observer la boîte de message d'erreur d'exécution, contient les options «Continuer», «Fin», «Débogage» et «Aide» . examinons les utilisations de chacun d'eux.

  • L' option Continuer ignorera l'exception et continuera le code si cela est possible.
  • L' option de fin met fin au programme.
  • L' option de débogage mettra en surbrillance l'instruction où l'erreur s'est produite. ce qui vous aide à déboguer ou à corriger le code.
  • L' option d' aide vous amènera à ouvrir la page d'aide de Microsoft MSDN.

On Error GoTo 0 avec On Error Resume Next

Code:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Kill "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

Dans le code ci-dessus, il ignorera les erreurs jusqu'à ce qu'il atteigne l'instruction On Error GoTo 0. Après l'instruction On Error GoTo 0, le code revient en arrière ou passe à la vérification d'erreur normale et déclenche l'erreur attendue. lorsque j'exécute le code ci-dessus, il présentera l'erreur de division, c'est-à-dire la différence de type (la valeur numérique ne peut pas être divisée par le texte).

On Error GoTo 0 désactive toute récupération d'erreur actuellement présente dans le code VBA, c'est-à-dire désactiver la gestion des erreurs dans le code principal tandis que On Error GoTo -1 efface la gestion des erreurs et la définit sur rien qui vous aide ou vous permet de créer une autre interruption d'erreur.

3. En cas d'erreur GoTo <LABEL

VBA pour transférer le contrôle du programme sur la ligne suivie de l'étiquette si des erreurs d'exécution sont rencontrées, c'est-à-dire que le code saute sur l'étiquette spécifiée. Ici, les instructions de code entre la ligne d'exception et l'étiquette ne seront pas exécutées.

Cette méthode est plus appropriée et significative pour quitter le programme avec élégance si une erreur fatale majeure se produit pendant l'exécution.

Dans le code VBA mentionné ci-dessous dès que l'erreur se produit à la ligne 3, le programme transfère le contrôle à l'étiquette de la ligne 6 (le message contextuel apparaît comme «Gestionnaire d'exceptions» ).

Code:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Cette ligne ne sera pas exécutée" Exit Sub Error_handler: MsgBox "exception handler" End Sub 

Ici, vous pouvez remarquer que 'Exit Sub' doit être utilisé juste avant l'étiquette 'Error_handler:', ceci est fait pour s'assurer que le bloc de code du gestionnaire d'erreur doit s'arrêter ou ne pas s'exécuter s'il n'y a pas d'erreur. Maintenant, vous pouvez enregistrer votre classeur en tant que «classeur compatible avec les macros Excel». En cliquant sur Enregistrer sous dans le coin gauche de la feuille de calcul.

Encore une fois, si vous ouvrez un fichier, vous pouvez cliquer sur la touche de raccourci, c'est-à-dire Fn + Alt + f8, la boîte de dialogue "Macro" apparaît, où vous pouvez exécuter un code de macro enregistré de votre choix ou vous pouvez cliquer sur Fn + Alt + F11 pour une fenêtre macro complète.

Choses dont il faut se rappeler

  • Avant d'écrire du code, vous devez vous assurer que la suppression des erreurs non gérées est cochée ou sélectionnée par erreur. option de piégeage sous général dans les options de l'outil de la barre d'outils VBA.
  • C'est un paramètre par défaut qui aide à arrêter votre code pour les erreurs qui ne sont pas gérées.
  • Pause sur toutes les erreurs: il arrêtera votre code sur tous les types d'erreurs.
  • Module de classe de rodage: dans le cas où un objet tel qu'un formulaire utilisateur est utilisé dans le code, il mettra en évidence la ligne exacte à l'origine de l'erreur.

Articles recommandés

Ceci est un guide de gestion des erreurs VBA. Nous expliquons ici comment utiliser la gestion des erreurs VBA dans Excel ainsi que des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Tableau de déclaration VBA (exemples)
  2. VBA en cas d'erreur
  3. Feuille de déprotection VBA
  4. Colonnes VBA | Modèles Excel
  5. VBA Environ

Catégorie: