VBA sur les déclarations d'erreur - Les 3 meilleures façons de gérer les erreurs

Table des matières

Instruction Excel VBA On Error

L' instruction VBA On Error est un type de mécanisme de gestion des erreurs qui est utilisé pour guider le code pour faire quoi s'il rencontre un type d'erreur, généralement lorsqu'un code rencontre une erreur, l'exécution s'arrête mais avec cette instruction dans le code, l'exécution du le code continue comme il a un ensemble d'instructions à faire lorsqu'il rencontre une erreur.

Anticiper l'erreur dans le code fait de vous un pro du codage VBA. Vous ne pouvez pas rendre le code efficace à 100%. Même si vous êtes sûr de votre code d'une manière ou d'une autre, cela peut générer une erreur.

Il est presque impossible d'identifier et de gérer tous les types d'erreur, mais nous avons différentes façons de gérer une erreur dans VBA. Lors de l'écriture du code, vous ne prévoyez peut-être pas le type de code d'erreur, mais si une erreur survient, vous passerez plus de temps à déboguer qu'à écrire le code lui-même.

Qu'est-ce qu'une erreur?

Une erreur n'est rien d'autre qu'une ligne de code qui ne peut pas être exécutée en raison de la fonctionnalité ou du mauvais code. Essayez donc d'anticiper l'erreur et de la gérer.

Par exemple, si vous essayez de supprimer la feuille qui n'est pas là, alors évidemment nous ne pouvons pas exécuter cette ligne de code.

Une erreur est de trois types, l'une est une erreur compilée due à des variables non déclarées. Le deuxième est une erreur de saisie de données due à des entrées erronées par le codeur, et le troisième est une erreur d'exécution due au fait que VBA ne peut pas reconnaître la ligne de code. Pour essayer d'accéder ou de travailler sur une feuille de calcul ou un classeur, qui n'est pas là.

Mais nous avons une instruction dans VBA pour gérer tous ces types d'erreurs, c'est-à-dire l'instruction «On Error».

Types d'énoncés On Error

Le point clé de la gestion des erreurs dans VBA est l'instruction «On Error». Par exemple, En cas d'erreur, «reprendre la ligne suivante», «aller à ou passer à une autre ligne», etc.…

L'instruction On Error a trois types d'instructions.

  1. GoTo 0 signifie que chaque fois qu'une erreur d'exécution se produit, Excel ou VBA doit afficher la boîte de message d'erreur indiquant le type d'erreur rencontré. Dès que VBA exécute le code, il désactive tous les gestionnaires d'erreurs de ce bloc particulier sur le code.
  2. Resume Next signifie que chaque fois que l'erreur se produit, cette instruction demande à Excel d'ignorer cette erreur et de passer à (reprendre ensuite) la ligne de code suivante sans afficher de message d'erreur. Cela ne signifie pas que cela corrigera l'erreur; au contraire, il ignore simplement l'erreur.
  3. GoTo (étiquette) signifie que chaque fois que VBA rencontre une erreur, accédez à l'étiquette attribuée. Cela fait passer le code à la ligne spécifique fournie par le codeur.

Top 3 des moyens de gérer les erreurs dans VBA

# 1 - En cas d'erreur, reprendre ensuite

Supposons que vous divisez la valeur de 20 par 0 et que vous avez déclaré la variable pour lui affecter le résultat de la division.

Code:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Si vous exécutez ce code, il lancera l'erreur ci-dessous.

Vous ne pouvez donc diviser aucun nombre par une valeur nulle. Le numéro d'erreur d'exécution est 11, c'est-à-dire Division par zéro.

Maintenant, je vais ajouter une ligne de plus au code.

Code:

Sub OnError_Example1 () Dim i As Integer, j As Integer i = 20/0 j = 20/2 End Sub

Maintenant, je vais ajouter la déclaration En cas d'erreur, la prochaine en haut.

Code:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 End Sub

Maintenant, si j'exécute ce code, il ne me donnera aucun message d'erreur; au contraire, il exécutera la prochaine ligne de code, c'est-à-dire j = 20/2.

# 2 - En cas d'erreur GoTo Label

J'ai déclaré trois variables.

Code:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer

Pour ces trois variables, je vais attribuer un calcul de division.

Code:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

Le résultat de tous ces trois calculs sera affiché dans la boîte de message.

Code:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "La valeur de i est" & i & vbNewLine & "La valeur de j est "& j & _ vbNewLine &" La valeur de k est "& k & vbNewLine End Sub

Maintenant, je vais essayer d'exécuter ce code car le calcul de «I» n'est pas correct. Nous obtiendrons l'erreur d'exécution 11.

Maintenant, j'ajouterai l'instruction "On Error Resume Next".

Code:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20/0 j = 20/2 k = 10/5 MsgBox "La valeur de i est" & i & vbNewLine & "Le la valeur de j est "& j & _ vbNewLine &" La valeur de k est "& k & vbNewLine End Sub

Si j'exécute cela, il sautera le calcul «I» et exécutera les deux calculs restants, et le résultat est le suivant.

Maintenant, au lieu de "On Error Resume Next", j'ajouterai "On Error GoTo KCalculation".

Code:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20/0 j = 20/2 KCalculation: k = 10/5 MsgBox "La valeur de i est" & i & vbNewLine & "La valeur de j est" & j & _ vbNewLine & "La valeur de k est" & k & vbNewLine End Sub
Remarque: Ici, «KCalculation» est le nom d'étiquette que j'avais donné; vous pouvez donner votre propre nom d'étiquette sans espace.

Maintenant, si j'exécute cette ligne de code, elle ne passera pas à la ligne suivante. Il passera plutôt au nom d'étiquette que j'ai entré, c'est-à-dire «KCalcualtion». Ici, il ignorera l'erreur donnée par «I», et aussi, il n'exécutera pas le calcul «j», mais tout de suite, il passera à «KCalcualtion».

# 3 - Numéro d'erreur d'impression dans VBA

À la fin du code, nous pouvons également imprimer le numéro d'erreur dans une boîte de message séparée. La ligne de code suivante fera ce travail.

Code:

Err.Number

Maintenant, je vais exécuter ce code, la première boîte de message affichera les résultats du calcul.

Cliquez sur OK. Il affichera une autre boîte de message pour afficher le numéro d'erreur.

Nous allons 11; par conséquent, c'est-à-dire Division par zéro.

Nous pouvons également obtenir la description de l'erreur au lieu du numéro. Nous avons juste besoin de changer le code. Ci-dessous le code.

Code:

Err.Description

Il affichera une description comme celle-ci.

Choses dont il faut se rappeler

  • Après avoir entré "On Error Resume Next" à la fin du code, n'oubliez pas d'ajouter l'instruction "On Error GoTo 0".
  • Le nom de l'étiquette doit être le même aux deux endroits.
  • Les noms d'étiquettes n'ont pas besoin d'être définis bien à l'avance.
  • À la fin, voyez toujours quelle était l'erreur survenue dans la boîte de message séparée.

Articles intéressants...