Variables locales, variables globales

DéfinitionVariables 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

1
Function test()
2
  a = a + 1
3
  test = a
4
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éfinitionNom 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.

1
Function test1()
2
  a = 3*2
3
  test1 = a
4
End Function
5
Function test2()
6
  a = "bonjour"
7
  test2 = a
8
End Function

DéfinitionVariables 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 :

1
Public a
2
Function test1()
3
  a = 2
4
  test1 = a
5
End Function
6
Function test2()
7
  a = a * 2
8
  test2 = a
9
End Function

En lançant test1 on initialise a à 2.

En lançant test2 a vaut désormais 4.

ComplémentInitialisation

Les variables globales peuvent être initialisées au moment de l'ouverture du classeur.

Pour cela on crée une sous-routine d'initialisation :

1
Sub init()
2
  a=5
3
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 :

Ouverture Classeur