Variables locales, variables globales
Définition : Variables locales
Les variables que nous utilisons dans une procédure n'appartiennent qu'à cette procédure et perdent leur valeur à la fin de la procédure. On dit que ce sont des variables locales.
Prenons une fonction test qui retourne la valeur de a augmentée de 1
Function test()
a = a + 1
test = a
End Function
Si nous lançons la fonction test, a est égale à sa valeur d'origine 0 plus 1, donc a vaut 1.
Si nous relançons notre fonction test, a est réinitialisée à la valeur 0 et la fonction retournera de nouveau la valeur 1.
a est appelé variable locale de la fonction. La variable n'appartient qu'à la fonction test, elle ne peut pas être utilisée par une autre procédure et est réinitialisée à chaque utilisation.
Définition : Nom des variables
Le même nom de variable peut être utilisé dans plusieurs procédures. Au même titre que plusieurs fichiers de même nom peuvent être stockées dans différents répertoires.
Chacune de ces variables faisant références à des adresses mémoire différentes.
Function test1()
a = 3*2
test1 = a
End Function
Function test2()
a = "bonjour"
test2 = a
End Function
Définition : Variables globales
Dans certain cas, il est intéressant de pouvoir utiliser la même variable dans plusieurs procédures tout en conservant sa valeur.
Pour ça, il nous faut déclarer cette variable comme globale. Elle doit être déclarée à l'aide du mot clé Public en haut du module afin d'être visible par l'ensemble des procédures.
Prenons deux fonctions utilisant la même variable a :
Public a
Function test1()
a = 2
test1 = a
End Function
Function test2()
a = a * 2
test2 = a
End Function
En lançant test1 on initialise a à 2.
En lançant test2 a vaut désormais 4.
Complément : Initialisation
Les variables globales peuvent être initialisées au moment de l'ouverture du classeur.
Pour cela on crée une sous-routine d'initialisation :
Sub init()
a=5
End Sub
Et, on appelle cette sous-routine à l'ouverture du classeur.
Double-Cliquez sur ThisWorkbook dans la fenêtre projet.
Sélectionnez Workbook dans le menu déroulant de gauche et Open dans le menu de droite
Appelez init dans la sous-routine créée :