Les variables, les constantes
Définitions
En programmation VBA, pour stocker des informations qui seront utilisées dans vos programmes, vous utilisez des "récipients" qu’on appelle variable ou constante. Une constante a une valeur unique qui ne sera jamais changée, alors qu’une variable peut avoir plusieurs valeurs différentes durant l’exécution de votre programme.
Pour manipuler des variables vous devez connaître deux attributs :
-
le nom de la variable, que vous pourrez choisir selon vos besoins, en respectant quelques règles évoquées dans le paragraphe Convention de nommage,
-
le type de donnée qui sera stockée dans la variable.
Déclaration
Pour pouvoir utiliser une variable, il faut dans un premier temps la déclarer, pour indiquer au programme qu’elle sera utilisée ultérieurement. Les déclarations se font donc d’habitude au début du programme et doivent toujours se faire en amont de la première utilisation desdites variables.
La syntaxe générale de déclaration d’une variable est la suivante :
Dim NomDeLaVariable As TypeDeLaVariable
Par exemple, la ligne suivante permet de déclarer la variable dtDateExamen, qui contiendra une date.
Dim dtDateExamen As Date
Exemple 1 : déclaration d’une variable de type Date
Le mot-clé Dim sert à indiquer la déclaration d’une variable. Suit alors le nom de la variable. Vous trouvez ensuite le mot-clé As qui permet de préciser le type de donnée qui sera contenu dans la variable. Enfin, vous trouvez le type de donnée, dont vous verrez les types principaux dans la section suivante.
Dans l’exemple 1, le type de donnée est Date, qui permet de stocker une date et une heure dans la variable, par exemple 25 mai 1983 11:35:02.
Les types de données
Il existe des centaines de types de données, mais vous verrez ici les types de données les plus répandus et basiques qui vous serviront toujours.
Les types numériques
Il existe plusieurs types de données permettant de gérer les valeurs numériques, selon que vous ayez besoin de stocker des petites ou des grandes valeurs, des valeurs entières ou décimales.
Les valeurs entières - Byte, Integer et Long
Le type Byte permet de stocker une valeur entière comprise entre 0 et 255. Le terme Byte en anglais signifie octet, soit 8 bits.
Dim b As Byte
b = 45
Exemple 2 : déclaration d’une variable de type Byte
Le type Integer permet de stocker une valeur entière comprise entre -32 768 et 32 767. Il est stocké sur 16 bits (2 octets).
Dim i As Integer
i = 11235
Exemple 3 : déclaration d’une variable de type Integer
Le type Long permet de stocker une valeur entière comprise entre -2 147 483 648 et 2 147 483 647. Il est stocké sur 32 bits (4 octets).
Dim l As Long
l = 11235813
Exemple 4 : déclaration d’une variable de type Long
Si vous utilisez une variable de type entier, si vous lui affectez une valeur décimale (par exemple i = 1.23), la valeur qui sera affectée à la variable i sera alors 1. Si tel est le cas, privilégiez une variable de type décimal.
Les valeurs décimales - Single, Double et Currency
Lorsque les valeurs numériques que vous souhaitez manipuler sont des décimales (comme 3.14, 2.50 ou 0.75), vous disposez également de plusieurs types de données qui permettent de stocker de telles valeurs. Remarquez que le séparateur décimal en programmation VBA est le point (.).
Le type Single permet de stocker des nombres décimaux, pour des valeurs comprises entre -3.402823E38 et -1.401298E-45 (E38 signifiant 10 à la puissance 38 soit un 1 suivi de trente-huit 0) pour les valeurs négatives et entre 1.401298E-45 et 3.402823E38 pour les valeurs positives. Il utilise 32 bits (4 octets).
Dim s As Single
s=7E-3
'est équivalent à
s=0.007
Exemple 5 : déclaration d’une variable de type Single
Le type Double permet quant à...
Déclaration multiple
Si vous avez plusieurs variables à utiliser dans votre programme, par exemple une variable dtDateExamen de type Date, ainsi qu’une variable strTitreExamen de type String, et une autre variable strSalle, également de type String, vous avez plusieurs façons de les déclarer.
'Déclarations ligne par ligne (similaire à la déclaration vue dans le
sous-chapitre précédent)
Dim dtDateExamen As Date
Dim strTitreExamen As String
Dim strSalle As String
'Déclarations séparées par des virgules (le plus courant)
Dim dtDateExamen As Date, strTitreExamen As String,
strSalle As String
'Déclarations sur plusieurs lignes (1 ligne par type de donnée)
Dim dtDateExamen As Date
Dim strTitreExamen As String, strSalle As String
'Déclarations sur une seule ligne (peu fréquent et peu lisible)
Dim dtDateExamen As Date : Dim strTitreExamen As String : Dim strSalle
As String
Exemple 12 : les différentes façons d’effectuer des déclarations multiples
Comme chacune des façons de déclarer les variables est équivalente aux autres, utilisez celle qui vous apparaît comme la plus facile pour vous.
Attention à bien spécifier pour chaque variable le type de données qui lui correspond, sinon vous risquez...
Affecter une valeur à une variable
Lorsque vous avez déclaré vos variables, vient le temps de les utiliser. Comme vous avez pu le voir dans les exemples précédents, la syntaxe pour affecter une valeur à une variable sera la suivante :
NomDeVotreVariable = valeur_assignee
Comme ceci :
Dim X As Integer
X = -15
Exemple 14 : déclaration et affectation d’une variable
L’affectation se fait au travers du caractère égal =. La valeur assignée se trouvant à droite du signe, alors que la variable se retrouve à gauche. Le calcul s’effectue de droite à gauche pour l’affectation. Après l’exécution de la ligne, la variable X contient la valeur -15.
Lire une valeur de variable
De la même façon qu’on utilise le signe = pour affecter une valeur à une variable, on utilise le signe = pour lire la valeur d’une variable. Au lieu de la positionner à gauche du signe =, elle le sera à droite.
Dim i As Integer, j As Integer
i = 1
j = i + 2
Exemple 15 : lecture et affectation d’une variable
Dans le code précédent, vous affectez la valeur 1 à la variable i, puis vous additionnez la valeur de la variable i et 2, pour l’affecter à la variable j. Après l’exécution des instructions, vous aurez donc la valeur 1 dans la variable i et la valeur 3 dans la variable j.
Convertir un type de données en un autre
Comme vous le verrez durant la lecture de cet ouvrage, il peut parfois être utile de transformer un type de données en un autre type de données, pour manipuler la donnée plus facilement.
Qu’il s’agisse de passer d’une valeur numérique au texte, de transformer du texte en date, ou encore de transformer une date en valeur numérique, il existe plusieurs fonctions qui permettent ces conversions. Le verbe également utilisé pour cette conversion est "caster", qui peut apparaître dans certaines documentations. On pourra dire "caster en date".
Par exemple, pour convertir une chaîne de caractères en valeur numérique entière, vous pouvez utiliser la fonction CInt(), ou encore pour convertir une valeur numérique en valeur booléenne, vous pouvez utiliser la fonction CBool().
?CInt("1123")
1123
?CBool(0)
Faux
Pour qu’une conversion se fasse, il faut bien entendu que la valeur une fois convertie appartienne bien à l’intervalle des valeurs autorisées par son type converti. Les conversions entre valeurs numériques sont relativement peu courantes, alors que celles entre chaînes de caractères ou dates vers valeur numérique, et inversement, sont plutôt fréquentes.
Voici un tableau des fonctions de conversions...
Les tableaux
Concept de tableau
Lorsque vous souhaitez manipuler des groupes de données du même type, il est possible de les disposer dans un tableau. Tout comme vous manipulez les données sous Excel, il est possible d’accéder aux données d’un tableau en utilisant leur indice au sein de celui-ci.
Un tableau peut être constitué d’une ou de plusieurs dimensions. Vous verrez des exemples de tableaux à 2 voire 3 dimensions dans les paragraphes qui suivent. Lors de la déclaration du tableau, vous pouvez préciser une taille fixe pour le tableau, ou le définir comme tableau de taille dynamique (sa taille sera définie plus tard dans le programme).
Tous les types de données peuvent faire l’objet d’un tableau.
Déclaration d’un tableau
De la même façon que vous devez déclarer une variable pour pouvoir l’utiliser, les tableaux de données doivent être déclarés.
Tableau de taille fixe
Pour déclarer un tableau de taille fixe, la syntaxe générale de l’instruction sera la suivante :
Dim NomDuTableau(TailleDuTableau) As TypeDeDonnee
'exemple
Dim TabString(8) As String
Exemple 16 : déclaration d’un tableau de taille fixe
L’indice 8 correspond à la taille du tableau. Pour pointer sur les éléments du tableau, il vous faudra ainsi passer par leur indice.
L’indice inférieur du tableau peut commencer à 0 ou 1, selon la valeur qui est spécifiée par l’instruction Option Base, en haut du module. Ce point sera abordé dans la section suivante. Par défaut, le décompte débute avec la valeur 0.
Voici un exemple de déclaration et d’alimentation d’un tableau de chaînes de caractères.
Option Base 0
Dim Semaine(6) As String
Semaine(0)="Lundi"
Semaine(1)="Mardi"
Semaine(2)="Mercredi"
Semaine(3)="Jeudi"
Semaine(4)="Vendredi"
Semaine(5)="Samedi"
Semaine(6)="Dimanche"
Exemple 17 : alimentation d’un tableau de taille fixe
Tableau de taille dynamique
Lorsque vous ne connaissez pas à...
Les constantes
Certaines choses changent, et d’autres ne changeront jamais. Lorsque vous souhaitez garder des valeurs inchangées durant les programmes, vous avez la possibilité de le faire au travers des constantes. Il existe également des constantes directement disponibles dans Office, que vous avez vu par exemple dans le chapitre Communiquer avec l’utilisateur - MsgBox et InputBox.
Les constantes de l’utilisateur
Si en tant que développeur, vous souhaitez stocker une valeur qui ne pourra pas être modifiée, vous pouvez déclarer une constante avec le mot-clé Const. La syntaxe générale de déclaration d’une constante est la suivante :
Const NomDeVotreConstante [As TypeDeVotreConstante]= ValeurConstante
Par exemple, pour déclarer une constante AGE_MAJORITE de type numérique entier et de valeur 18, la déclaration sera la suivante :
Const AGE_MAJORITE As Integer = 18
Exemple 29 : déclaration d’une constante
Une fois la déclaration effectuée, il n’est pas possible d’affecter une autre valeur à une constante. Dans l’exemple suivant, lors de l’exécution du code, un message d’erreur apparaîtra à l’écran.
Const AGE_MAJORITE As Integer = 18
AGE_MAJORITE = 19
Exemple 30 : tentative de modifier la valeur d’une constante

Il est intéressant...
Convention de nommage
Afin de vous rendre le travail plus facile, mais aussi parce que VBA vous fixe des limites, la façon dont vous nommerez variables et constantes n’est pas totalement libre. Bien que chaque entreprise puisse avoir sa propre nomenclature de nommage, voici les règles qui sont les plus communément admises et suivies dans le cadre du développement d’outils VBA.
Un nom unique pour les variables
Pour commencer, il n’est pas possible d’avoir deux variables du même nom à l’intérieur d’une même portée (cette notion est évoquée avec plus de détails dans le chapitre Procédures, fonctions et macros). Ainsi un code comme le suivant générera une erreur.
Dim a As Integer
Dim a As Date
Exemple 31 : interdiction d’avoir deux variables avec le même nom.
L’erreur qui s’affichera alors à l’écran sera la suivante :

Règles générales de nommage
Qu’il s’agisse de variables, de constantes ou d’objets quelconques dans vos programmes VBA, voici les principales règles qu’il vous faudra respecter :
-
Le nom doit débuter par une lettre uniquement.
-
Sont donc interdits _ABC et 1Titre.
-
Le nom est limité à 255 caractères.
-
Le nom est composé uniquement de lettres, de chiffres et du caractère souligné (_).
-
Sont donc interdits A-BC et dt%.
-
Le nom ne peut pas contenir de caractères de ponctuation ni d’espace.
-
Le nom ne peut pas correspondre à un mot-clé VBA.
-
Sont donc interdits Dim, As ou encore For.
Voici une série de noms de variables qui sont valides :
-
Texte06,
-
Txt06Nom,
-
Nom_6_txt.
Bien que cela ne soit pas interdit par les règles imposées par VBA, il est fortement déconseillé d’utiliser des caractères accentués (é, à, ù) ou diacritiques (ç, ø) dans le nommage de vos variables. En effet, votre configuration de clavier n’est pas nécessairement celle de vos collègues qui seraient amenés à reprendre votre travail.
'Vous préférerez par exemple utiliser
Dim dtArrivee As Date
'À
Dim dtArrivée As Date
Exemple 32 : privilégier les caractères...
Exercices
Pour chaque chapitre, vous serez amené à rédiger vos propres programmes. Les solutions sont mises à disposition dans le chapitre Correction des exercices.
Pour ce chapitre, créez un module portant le nom/numéro du chapitre, et dans ce module, créez une macro pour chaque exercice Private Sub TitreExercice() dans lequel vous placerez vos instructions.
Pour afficher une valeur à l’utilisateur, vous pourrez utiliser l’instruction MsgBox suivie de la variable que vous souhaitez afficher.
Terminez l’exercice en exécutant la macro, en appuyant sur la touche F5. Les résultats attendus à l’écran seront indiqués entre parenthèses. Aucune erreur ne doit survenir lors de la compilation ni lors de l’exécution.
Déclaration simple de variables
Entre les deux lignes suivantes :
Private Sub Variables_Constantes_Exercice1()
End Sub
A-Déclarez une variable pouvant accueillir un nom d’étudiant qui s’appellera Nom Etudiant.
B-Déclarez une variable qui accepte des valeurs entières et qui s’appellera NumeroCarteEtudiant.
C-Déclarez une variable qui pourra contenir Vrai ou Faux, que vous nommerez Boursier.
D-Déclarez une constante qui contiendra le 1er septembre 2025, que vous nommerez DATE_LIMITE_INSCRIPTION.
E-Déclarez une variable pouvant stocker...