Les variables permettent de stocker toutes sortes de données.
Voici un premier exemple :
'Affichage
de la valeur de la variable dans une boîte de dialogue
Sub
variables()
'Déclaration
de la variable
Dim
ma_variable
As
Integer
'Attribution
d'une valeur à la variable
ma_variable = 12
'Affichage
de la valeur de ma_variable dans une MsgBox
MsgBox ma_variable
End
Sub
Cette première ligne de code est la déclaration de la variable (généralement placée en début de procédure).
Dim
ma_variable
As
Integer
Dim : déclaration de la variable
ma_variable : nom choisi pour cette variable (sans espaces)
As : déclaration du type de la variable
Integer : type de la variable
Déclarer ses variables n'est pas obligatoire mais recommandé. Cela permet de s'y retrouver plus facilement, peut aider à résoudre plus facilement les problèmes, etc. Bref, mieux vaut prendre l'habitude de déclarer ses variables correctement.
Le type de la variable indique la nature de son contenu (texte, nombres, date, etc.).
Une valeur est ensuite donnée à cette variable :
ma_variable = 12
Et enfin, la valeur de la variable est affichée dans une boîte de dialogue :
MsgBox ma_variable
MsgBox "valeur" affiche une valeur dans une boîte de dialogue de la façon la plus simple.
Les boîtes de dialogue seront détaillées dans quelques leçons ...
Le résultat de ce code :
Si pour le moment vous ne comprenez pas bien l'intérêt d'utiliser des variables, soyez rassuré, les exemples abordés au cours des prochaines leçons vous en démontreront l'utilité ...
Nom |
Type |
Détails |
Symbole |
Byte |
Numérique |
Nombre entier de 0 à 255. |
|
Integer |
Numérique |
Nombre entier de -32'768 à 32'767. |
% |
Long |
Numérique |
Nombre entier de - 2'147'483'648 à 2'147'483'647. |
& |
Currency |
Numérique |
Nombre à décimale fixe de -922'337'203'685'477.5808 à 922'337'203'685'477.5807. |
@ |
Single |
Numérique |
Nombre à virgule flottante de -3.402823E38 à 3.402823E38. |
! |
Double |
Numérique |
Nombre à virgule flottante de -1.79769313486232D308 à 1.79769313486232D308. |
# |
String |
Texte |
Texte. |
$ |
Date |
Date |
Date et heure. |
|
Boolean |
Boolean |
True (vrai) ou False (faux). |
|
Object |
Objet |
Objet Microsoft. |
|
Variant |
Tous |
Tout type de données (type par défaut si la variable n'est pas déclarée). |
Quelques exemples avec différents types :
'Exemple : nombre
entier
Dim
nbEntier
As
Integer
nbEntier
= 12345
'Exemple
: nombre à virgule
Dim
nbVirgule
As
Single
nbVirgule
= 123.45
'Exemple
: texte
Dim
varTexte
As
String
varTexte
= "Excel-Pratique.com"
'Exemple
: date
Dim
varDate
As
Date
varDate
= "06.02.2011"
'Exemple
: vrai/faux
Dim
varBoolean
As
Boolean
varBoolean
= True
'Exemple
: objet (objet Worksheet pour cet exemple)
Dim
varFeuille
As
Worksheet
Set
varFeuille = Sheets(
"Feuil2"
)
'Set =>
attribution d'une valeur à une variable objet
'Exemple
d'utilisation de la variable objet : activation de la feuille
varFeuille.Activate
Les symboles indiqués dans le tableau ci-dessus permettent de raccourcir les déclarations de variables.
Par soucis de lisibilité, ils ne seront pas utilisés dans les leçons mais voici tout de même un exemple :
Dim
exemple
As
Integer
Dim
exemple%
Ces deux lignes sont identiques.
Remarque : il est possible de forcer les déclarations de variables en plaçant Option Explicit tout au début du module (une erreur sera ainsi générée en cas d'oubli de déclaration).
Nous allons maintenant créer par étapes une macro qui va récupérer le nom dans la cellule A2, le prénom dans la cellule B2, l'âge dans la cellule C2 et qui va les afficher dans une boîte de dialogue.
Fichier source : exercices_variables.xls
Nous commençons par déclarer les variables (sur la même ligne, séparées par des virgules) :
Sub
variables()
'Déclaration
des variables
Dim
nom
As
String
,
prenom
As
String
,
age
As
Integer
End
Sub
Nous attribuons ensuite les valeurs aux variables avec Cells :
Sub
variables()
'Déclaration
des variables
Dim
nom
As
String
,
prenom
As
String
,
age
As
Integer
'Valeurs
des variables
nom
= Cells(2, 1)
prenom = Cells(2, 2)
age = Cells(2, 3)
End
Sub
Et enfin, nous affichons le résultat dans la boîte de dialogue en concaténant les valeurs avec & (comme sous Excel).
Sub
variables()
'Déclaration
des variables
Dim
nom
As
String
,
prenom
As
String
,
age
As
Integer
'Valeurs
des variables
nom
= Cells(2, 1)
prenom = Cells(2, 2)
age = Cells(2, 3)
'Boîte
de dialogue
MsgBox
nom &
"
"
& prenom &
",
"
& age &
"
ans"
End
Sub
Ce qui nous donne :
Nous allons maintenant rechercher à afficher dans la boite de dialogue la ligne du tableau correspondant au numéro indiqué dans la cellule F5.
Voici l'objectif :
Prenez un moment pour effectuer cette modification vous-même avant de passer à la solution ci-dessous ...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
La solution :
Sub
variables()
'Déclaration
des variables
Dim
nom
As
String
,
prenom
As
String
,
age
As
Integer
,
numero_ligne
As
Integer
'Valeurs
des variables
numero_ligne = Range(
"F5"
)
+ 1
nom = Cells(numero_ligne, 1)
prenom = Cells(numero_ligne, 2)
age =
Cells(numero_ligne, 3)
'Boîte
de dialogue
MsgBox
nom &
"
"
& prenom &
",
"
& age &
"
ans"
End
Sub
Ajout d'une variable :
'Déclaration
des variables
Dim
nom
As
String
,
prenom
As
String
,
age
As
Integer
,
numero_ligne
As
Integer
La variable numero_ligne prend ensuite la valeur de la cellule F5 à laquelle nous ajoutons 1 (pour ne pas tenir compte de la première ligne qui contient les titres du tableau) ainsi, numero_ligne aura pour valeur le n° de ligne des cellules qui nous intéressent :
numero_ligne = Range(
"F5"
)
+ 1
Il ne reste plus qu'à remplacer les n° de ligne des Cells par notre variable :
nom = Cells(numero_ligne, 1)
prenom =
Cells(numero_ligne, 2)
age = Cells(numero_ligne, 3)
Notre macro affiche maintenant la ligne du tableau qui nous intéresse.
Notez au passage que nous pouvons réduire cette procédure entière sur une ligne :
Sub
variables()
MsgBox Cells(Range("F5"
)+1,1)
&
" "
& Cells(Range(
"F5"
)+1,2)
&
", "
& Cells(Range(
"F5"
)+1,3)
&
"
ans"
End
Sub
Le code fonctionne correctement, il est néanmoins beaucoup moins lisible que le précédent et plus difficile à retravailler (les codes ne seront donc pas réduits dans les leçons afin d'en faciliter la compréhension).