Bonjour à tous, l’article d’aujourd’hui se concentrera sur les bonnes pratiques en programmation appliquée au VBA. Certains conseils sont applicables pour tout langage mais d’autres seront dédiés au VBA.

1. Mettre des commentaires dans votre code
Ce conseil est valable quelque soit le langage. Tout commentaire que vous mettrez dans votre code vous aidera à comprendre ce que vous avez fait. Il n’est pas rare de se replonger dans un programme quelques mois après. De plus, si votre programme sera lu par d’autres personnes, il faut absolument commenter pour expliquer ce que vous faites.
2. Nommer clairement vos variables
Vous pouvez vous inspirer de ce qui est fait en Python avec la PEP8 (Python Enhancement Proposals). J’en parle dans cet article. Il faut rester simple et que le nom soit explicite pour savoir rapidement de quoi en parle. Vous pouvez aussi par exemple jumeler le nom de la fonction avec les noms des paramètres. Par exemple, au lieu d’avoir la fonction « publier_article(article) » nous pourrions avoir tout simplement « publier(article).
3. Ne pas utiliser les mots clés réservés au langage
Il faudra éviter d’utiliser des noms réservés au langage. En effet, les termes « ActiveSheet » ou « Range » par exemple sont des mots clés utilisés en VBA. De toute manière, l’interpréteur ne vous laissera pas les utiliser mais autant le savoir et éviter une erreur.
4. Eviter les variables globales
L’utilisation de variables globales nuit à la lisibilité de votre programme. La condition « acceptable » pour l’utilisation de variable globale est la définition d’une constante si et seulement si son nom est explicite. Cependant, 99% du temps, vous devez éviter de travailler avec des variables globales. Si vous avez besoin de données, mettez les en paramètres ou regroupez-les dans une structure de données.
5. Faites des fonctions simples
Une fonction qui fait trop de choses devient trop compliqué à lire et à comprendre. Si votre bloc de fonction deivent trop gros, réfléchissez à commencer diviser celle-ci. Pour estimer la complexité d’une fonction, il suffit de regarder le nombre d’arguments. Si vous dépassez 5 arguments, posez vous la question si la fonction ne fait pas trop de choses. Une fonction ne doit faire qu’une seule tâche simple.
Enfin, si l’un des arguments est une variable booléenne, il est alors certain que vous pouvez déjà diviser votre fonction en deux.
6. Tester le code et garder les fichiers de tests !
Si vous divisez bien votre programme en petit blocs, vous pourrez les tester plus facilement. Moins une fonction fait de choses, plus facile sera le débogage.
Une autre bonne pratique est de conserver les cas tests. Sur le moment vous serez sûr à 2000% de ce que vous avez fait mais dans un mois … Si vous gardez votre cas test, vous n’aurez qu’à le rejouer et en quelques secondes vous serez fixé.
7. Eviter d’utiliser le mot clé GoTo
L’utilisation de cette instruction est un grand débat. Personnellement, j’évite de l’utiliser le plus possible. Dans 99% des cas, on peut s’en affranchir si vous avez prévu ce qu’il faut en avance dans votre programme. Vous ne devez utiliser cette instruction qu’en cas d’extrême nécessité. Son utilisation risque de dégrader fortement la lisibilité du programme. Son utilisation intensive je vous l’accorde. Vous risquez également d’avoir des comportements non voulus. Néanmoins, cette fonction existe donc il serait idiot de ne pas s’en servir. Comme tout outil, il faut le maîtriser pour savoir s’en servir. Si vous êtes à l’aise avec son utilisation, pas de souci, mais avec parcimonie.
8. Option Explicit
En rajoutant cette ligne en début de module, vous serez obliger à bien déclarer toutes vos variables. Cela peut vous paraitre contraignant cependant cette option vous évitera bien des erreurs. Par exemple, si vous faites une faute de frappe dans une variable sans vous en apercevoir, le code ne vous dira rien sans activer cette option. Si vous voulez plus d’information sur cette option, voici le lien vers la documentation officielle.
il est conseillé de déclarer toutes les variables utilisées en début de procédure. Toutes les regrouper à un seul endroit permet d’éviter de les chercher dans les lignes de code. De plus, vous pouvez aussi les regrouper par type. Egalement, cela vous donnera une vision de votre programme en terme de nombre de variables.
Option Explicit
VB9. L’option Base 0
Cette option permet de définir l’indice du premier élément dans vos tableaux. Par défaut c’est 0 et c’est très bien comme cela. Cependant, naturellement, on aimerait que cela commence par 1 et on serait tenté de définir cette valeur à 1. Comme sur ce site nous allons jongler entre VBA et Python, autant utiliser le même fonctionnement. Cela vous évitera des nœuds au cerveau. En effet, Python utilise l’indice 0 pour le premier élément (j’en parle ici), nous ferons donc de même en VBA en spécifiant l’option « base » à la valeur de 0.
Option Base 0
VB10. Utiliser l’indentation
Cela permet d’améliorer drastiquement la lisibilité du code. L’indentation en VBA est uniquement esthétique. L’ouverture et la fermeture des boucles se fait par l’utilisation de mots clés. Ici, la boucle « For » est fermée par le mot clé « Next ».
Sub code_sans_indentation()
Dim i As Integer, j As Integer, N As Integer
N = 5
For i = 0 To N
For j = i To N
MsgBox i * j
Next
Next
End Sub
Sub code_avec_indentation()
Dim i As Integer, j As Integer, N As Integer
N = 5
For i = 0 To N
For j = i To N
MsgBox i * j
Next
Next
End Sub
VBL’indentation permet de définir différentes niveaux. Chaque niveau peut correspondre à une procédure ou une boucle. Pour identifier la boucle dans laquelle on se trouve, il suffit de tracer une ligne verticale et de séparer ce qu’il y a à droite et à gauche.
Dans cet article nous avons vu 10 conseils à suivre pour vous assurer d’avoir un code lisible, compréhensible par les autres et maintenable. Cela peut paraître très contraignant mais vous verrez qu’en pratique ils vous rendront service.
N’hésitez pas à laisser un commentaire si vous avez d’autres conseils à partager !
A bientôt,
Benjamin