Vous pouvez, à l'aide de « jumpmarks » (marques de saut), comme on les appelle, accroître la stabilité de votre code.  Examinez les lignes suivantes :

Sub Test()
Dim whatever as Nothing
On Error GoTo ErrHndler
BeginCommandGroup "Error Handling"
 ....
Votre code
GoAheadAndFinish:
ActiveDocument.EndCommandGroup
ActiveDocument.ActiveWindow.Refresh
Exit Sub
ErrHndler:
MsgBox "Error occured: " & Err.Description
Err.Clear
Resume GoAheadAndFinish
End Sub

L'instruction On Error GoTo ErrHndler ordonne à l'application VBA d'exécuter le code de haut en bas comme cele se fait ordinairement et, si une erreur survient au cours de l'exécution, de passer directement à la marque de saut ErrHndler (c'est-à-dire de sauter de cette instruction à la marque de saut et d'ignorer tout ce qu'il y a entre les deux).  La marque de saut est, à la fin, suivie de deux points qui font savoir à l'application VBA comment la traiter. Maintenant, l'exécution du code se poursuit au-dessous de la marque de saut, ouvrant une fenêtre qui nous indique le type d'erreur survenue et qui l'efface. Ensuite, le code ordonne la reprise avec une deuxième marque de saut GoAheadAndFinish. Si vous examinez le code, ligne par ligne, en appuyant sur la touche F8, vous remarquerez que son exécution se poursuit maintenant au-dessus de la marque de saut ErrHndler, qu'elle fait sortir d'un CommandGroup (voir Macro VBA : Conseil 1), actualiser la fenêtre et, enfin, terminer la procédure autrement par la commande Exit Sub (vous pouvez utiliser la même méthode aussi au moyen des fonctions).

L'avantage de cette méthode est évident : s'il ne se produit aucune erreur, le code sera exécuté de façon linéaire, de haut en bas, et les marques de saut seront ignorées. Cela signifie que la procédure se termine avec Exit Sub plutôt que End Sub et que la balise d'erreur ne s'est pas exécutée, ce qui est précisément ce que nous voulons. Ce mode de gestion des erreurs est utile, nécessaire même, si vous utilisez les instructions de CommandGroup pour accélérer votre code tout en le rendant plus stable.


Conseil de Maurice Beumers, Maître CorelDRAW, graphiste et illustrateur.

Anonymous