More

    Conseils infaillibles pour gérer les erreurs dans la programmation VBA Excel

    La gestion des erreurs est un aspect essentiel de la programmation VBA Excel, en particulier lorsque les utilisateurs entrent des valeurs non valides sur une feuille de calcul. Voici un guide sur la façon de gérer les erreurs fréquentes dans Excel VBA.

    La gestion des erreurs empêche non seulement le programme de se bloquer en raison d’une saisie incorrecte, mais aussi :

    • Fournir un retour d’information clair aux utilisateurs concernant les erreurs qui se produisent
    • Simplifiez la maintenance et le dépannage du code

    En gérant bien les erreurs, les programmeurs peuvent s’assurer que le programme fonctionne correctement et que les utilisateurs ont une meilleure expérience.

    Excel VBA 365

    Dans le monde de la programmation VBA Excel, des erreurs peuvent apparaître chaque fois qu’un utilisateur entre une valeur non valide dans une feuille de calcul. Ces erreurs, si elles ne sont pas gérées correctement, peuvent entraîner l’arrêt du programme ou donner des résultats indésirables.

    Dans cet article, Bardimin abordera diverses méthodes pour identifier et corriger les erreurs courantes dans Excel VBA, ainsi que des solutions pratiques pour maintenir le bon fonctionnement du programme malgré les interruptions.

    Types d’erreurs et comment écrire du code de gestion des erreurs

    La gestion des erreurs dans Excel VBA est essentielle pour garantir le bon fonctionnement du programme et offre une expérience utilisateur positive. Voici quelques types courants de gestion des erreurs utilisés dans Excel VBA :

    1. On Error GoTo

    Ce type de gestion des erreurs est utilisé pour diriger un programme vers un morceau de code spécifique lorsqu’une erreur se produit. Une fois détecté, le flux du programme se déplacera vers une étiquette spécifique qui a été définie pour gérer l’erreur.

    Private Sub CommandButton1_Click()
    	On Error GoTo err_handler
    	num1 = InputBox("Enter the first number")
    	num2 = InputBox("Enter the second number")
    	MsgBox num1 / num2
    	Exit Sub
    
    err_handler:
    	MsgBox "Invalid division, please try again"
    End Sub

    Dans cet exemple, si une erreur se produit (par exemple, une division par zéro), le programme passera à l’  étiquette err_handler et affichera un message d’erreur.

    2. On Error Resume Next

    Avec On Error Resume Next, le programme ignorera l’erreur et continuera à exécuter le code sur la ligne suivante. Ceci est utile pour les erreurs non critiques qui ne nécessitent pas de traitement particulier.

    Private Sub CommandButton2_Click()
    	On Error Resume Next
    	num1 = InputBox("Enter the first number")
    	num2 = InputBox("Enter the second number")
    	MsgBox num1 / num2
    End Sub

    Ici, même s’il y a une division par zéro, le programme ne s’arrêtera pas et l’exécution se poursuivra jusqu’à la ligne suivante.

    L’utilisation de Resume Next doit être faite avec prudence, car elle peut cacher des erreurs importantes.

    3. On Error GoTo 0

    En cas d’erreur, GoTo 0 est utilisé pour désactiver la gestion des erreurs qui était précédemment activée. Après avoir utilisé cette commande, s’il y a une erreur sur la ligne suivante, le programme s’arrêtera et affichera un message d’erreur standard.

    Sub ExampleGoToZero()
    	On Error Resume Next ' Ignore errors
    	Dim result As Double
    	result = 5 / 0 ' Errors are ignored
    	On Error GoTo 0 ' Disable error handling
    	MsgBox result
    	result = 5 / 0 ' This will cause the program to terminate since errors are no longer ignored
    End Sub

    Après avoir utilisé On Error GoTo 0, si une erreur se produit, le programme s’arrêtera comme d’habitude.

    4. On Error GoTo -1

    Ce type est utilisé pour réinitialiser l’état de gestion des erreurs qui s’applique dans le cadre de la procédure en cours. Les erreurs précédemment traitées n’affecteront plus le flux du programme.

    Sub ExampleGoToMinusOne()
    	On Error GoTo ErrorHandler
    	Dim result As Double
    	result = 5 / 0 ' This causes an error
    	Exit Sub
    
    	ErrorHandler:
    	MsgBox "Error handled."
    	On Error GoTo -1 ' Clears previous error status
    	' If the error occurs again, handling must be reset
    End Sub

    Avec On Error GoTo -1, la gestion des erreurs précédente sera supprimée, vous pouvez donc configurer une nouvelle gestion si nécessaire.

    5. Nested Error Handling

    Vous pouvez utiliser plusieurs niveaux de gestion des erreurs de manière imbriquée. Cela vous permet de gérer séparément différents types d’erreurs.

    Private Sub CommandButton4_Click()
    	Dim firstNum, secondNum As Double
    	On Error GoTo error_handler1
    	firstNum = InputBox("Enter the first number")
    
    	On Error GoTo error_handler2
    	secondNum = InputBox("Enter the second number")
    
    	MsgBox firstNum / secondNum
    	Exit Sub
    
    error_handler2:
    	MsgBox "Error! You tried to divide a number by zero! Try again!"
    
    	Exit Sub
    
    error_handler1:
    	MsgBox "You did not enter a number! Try again!"
    End Sub

    6. Validation des entrées à l’aide de IsNumeric

    Avant d’effectuer une opération arithmétique, vous pouvez valider l’entrée à l’aide de la fonction IsNumeric pour vous assurer que les données saisies sont numériques.

    Private Sub CommandButton5_Click()
    	Dim userInput As String
    	userInput = InputBox("Enter your age:")
    
    	If Not IsNumeric(userInput) Then
    	MsgBox "The input you entered is invalid. Please enter a number."
    	Exit Sub
    	End If
    
    	MsgBox "Your age is " & userInput & " years."
    End Sub

    Conclusion

    La gestion des erreurs est une partie importante de la programmation dans Excel VBA. En mettant en œuvre divers types de gestion des erreurs, les programmeurs peuvent créer des applications plus robustes et plus conviviales, ainsi que réduire la probabilité de plantages dus à des entrées non valides.

    Dernières articles