Aujourd’hui nous allons parler de deux manières de déclarer des variables en VBA: implicitement et explicitement.
- La déclaration implicite signifie que les variables n’ont pas nécessairement besoin d’être déclarées avant d’être utilisées. C’est plus rapide car vous n’avez pas besoin d’écrire des lignes de code pour déclarer toutes les variables, ni de préciser le type de la variable (qui peut donc changer).
- La déclaration explicite rend obligatoire la déclaration des variables avant leur utilisation. Elle est obtenue avec le paramètre Option Explicit. Toute utilisation de variable non déclarée auparavant renverra un message d’erreur. De plus vous pouvez également déclarer le type de la variable, et donc la forcer à accepter seulement un certain type de données ( par exemple une chaine de caractères ou un entier).
Comment déclarer les variables explicitement ou implicitement
Pour déclarer les variables implicitement, vous n’avez rien à faire, c’est le mode par défaut de VBA.
Pour déclarer les variables de manière explicite, il vous faut préciser Option Explicit au début de votre module. De plus chaque variable devra être déclarée en utilisant: Dim Mavariable As Type , par exemple
Option explicit Sub MaMacro() Dim mavariable As Integer mavariable=2 End Sub |
Différence d’exécution selon le mode de déclaration des variables.
Prenons la macro d’exemple ci-dessous, qui contient une erreur de saisie (mavleur au lieu de mavaleur)
Sub Bouton1_QuandClic() mavaleur = 2 MsgBox(mavleur) End Sub |
Le résultat affiché est le suivant:
La MsgBox est vide car elle fait appel à la variable mvaleur qui n’a pas été déclarée. VBA la traite donc comme une nouvelle variable, et la créée sur le champ en lui assignant une valeur vide. L’erreur de saisie n’a donc pas été détectée.
En revanche avec la déclaration explicite des variables, lorsque la macro est exécutée, VBA renvoie une erreur de compilation: l’utilisation de la variable mvaleur est interdite puisqu’elle n’a pas été déclarée auparavant:
D’autre part, pour aller jusqu’au bout des choses, si l’on utilise Option Explicit, autant déclarer aussi le type de chaque variable. La macro ci-dessous renvoie par exemple une erreur:
Option Explicit Sub Bouton1_QuandClic() Dim mavaleur As Integer mavaleur = "texte" MsgBox (mavaleur) End Sub |
Pourquoi ce message « Erreur d’exécution 13, Incompatibilité de type » ? La variable mavaleur a été déclarée de type entier et on essaye de lui affecter la valeur « texte » qui est une chaine de caractères.
Quand faut-il utiliser Option Explicit?
Bien que plus long à mettre en place, la déclaration explicite des variables est une bonne habitude de programmation qui vous permettra d’aller plus vite en évitant des erreurs dans vos macros. Elle est plus rigoureuse et efficace et devrait en toute logique être utilisée autant que possible.
La déclaration implicite n’est pas très rigoureuse, donc à proscrire dans des programmes complexes. Cependant, elle convient très bien lors de macros ultra simples ou vous n’avez que quelques lignes de code.
Notez cependant que toutes les macros d’un même module utilisent le même mode de déclaration, si vous voulez utiliser un mode différent dans deux macros, vous devrez créer deux modules.