Les variables permettent de stocker toutes sortes de données.
Voici un premier exemple :
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
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
MsgBox ma_variable
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é ...
Les types de variables
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). |
'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
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%
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).
Exemple pratique
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 : exercice_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
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
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
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
'Déclaration des variables
Dim nom As String, prenom As String, age As Integer, numero_ligne As Integer
numero_ligne = Range("F5") + 1
nom = Cells(numero_ligne, 1)
prenom = Cells(numero_ligne, 2)
age = Cells(numero_ligne, 3)
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
Les tableaux
Les variables permettent de stocker une valeur par variable, les tableaux permettent de stocker une multitude de valeurs (leur utilisation est proche de celle des variables).Voici quelques exemples de déclarations :
'Exemple de déclaration de variable
Dim var1 As String
'Exemple de déclaration de tableau à 1 dimension
Dim tab1(4) As String
'Exemple de déclaration de tableau à 2 dimensions
Dim tab2(4, 3) As String
'Exemple de déclaration de tableau à 3 dimensions
Dim tab3(4, 3, 2) As String
'Exemple de déclaration de tableau à 1 dimension
Dim tab1(4) As String
'Attribution de valeurs aux 5 cases
tab1(0) = "Valeur de la case 0"
tab1(1) = "Valeur de la case 1"
tab1(2) = "Valeur de la case 2"
tab1(3) = "Valeur de la case 3"
tab1(4) = "Valeur de la case 4"
Important : la première case d'un tableau est 0.
Autre exemple, le tableau à 2 dimensions :'Exemple de déclaration de tableau à 2 dimensions
Dim tab2(4, 3) As String
'Attribution de valeurs aux 3 cases colorées
tab2(0, 0) = "Valeur de la case rouge"
tab2(4, 1) = "Valeur de la case verte"
tab2(2, 3) = "Valeur de la case bleue"
Les constantes
Les constantes permettent de stocker des valeurs comme les variables, à la différence qu'on ne peut pas les modifier (d'où leur nom).Par exemple, nous pouvons ajouter une constante pour éviter les répétitions de 6.87236476641 :
Sub exemple_const()
Cells(1, 1) = Cells(1, 2) * 6.87236476641
Cells(2, 1) = Cells(2, 2) * 6.87236476641
Cells(3, 1) = Cells(3, 2) * 6.87236476641
Cells(4, 1) = Cells(4, 2) * 6.87236476641
Cells(5, 1) = Cells(5, 2) * 6.87236476641
End Sub
Sub exemple_const()
'Déclaration de la constante + attribution de sa valeur
Const TAUX_ANNUEL As Double = 6.87236476641
Cells(1, 1) = Cells(1, 2) * TAUX_ANNUEL
Cells(2, 1) = Cells(2, 2) * TAUX_ANNUEL
Cells(3, 1) = Cells(3, 2) * TAUX_ANNUEL
Cells(4, 1) = Cells(4, 2) * TAUX_ANNUEL
Cells(5, 1) = Cells(5, 2) * TAUX_ANNUEL
End Sub
La portée des variables
Si la variable est déclarée au début d'une procédure (Sub), elle ne peut être utilisée que dans cette même procédure. La valeur de la variable n'est pas conservée après l'exécution de la procédure.Sub procedure1()
Dim var1 As Integer
' => Utilisation de la variable dans la procédure uniquement
End Sub
Sub procedure2()
' => Impossible d'utiliser var1 ici
End Sub
Dim var1 As Integer
Sub procedure1()
' => Utilisation de var1 possible
End Sub
Sub procedure2()
' => Utilisation de var1 possible
End Sub
Global var1 As Integer
Sub procedure1()
Static var1 As Integer
End Sub
Static Sub procedure1()
Dim var1 As Integer
End Sub
Créer son propre type de variable
Nous n'allons pas nous attarder sur ce point, voici juste un exemple :'Création d'un type de variable
Type invites
nom As String
prenom As String
End Type
Sub variables()
'Déclaration
Dim p1 As invites
'Attributions des valeurs à p1
p1.nom = "Smith"
p1.prenom = "John"
'Exemple d'utilisation
MsgBox p1.nom & " " & p1.prenom
End Sub
Aucun commentaire:
Enregistrer un commentaire