|
PORTÉE ET DURÉE DE VIE
La portée représente la disponibilité d'une variable
pour son utilisation, il existe 3 niveaux : niveau de procédure,
niveau de module privé et niveau de module public. Sa portée
est définie lors de la déclaration de la variable et selon
son emplacement dans le code.
- Niveau de procédure : vous déclarez la variable
au sein d'une procédure, dans la 2ème ligne de code de
celle-ci. Elle n'est alors visible que dans la procédure, si
vous tentez de la lire dans une autre procédure, elle n'existera
pas. Pour comprendre cela, écrivez dans un module (si la ligne OptionExplicit existe
dans ce module, supprimez la) les 2 procédures suivantes :
Sub Lecture_Variable()
Dim Var1 As String
Var1 = "Ceci est le contenu de Var1"
MsgBox Var1
MsgBox Var2
End Sub
Sub Attribut_Var2()
Dim Var2 As String
Var2 = "Ceci est le contenu de Var2"
End Sub
Puis dans la fenêtre Exécution, tapez Lecture_Variable puis
appuyez sur Entrée. "Ceci est
le contenu de Var1" va s'afficher dans une fenêtre message, cliquez
sur Ok, le 2ème message sera vide, en effet pour la procédure Lecture_Variable, Var2 n'existe
pas. Si vous aviez laissé la ligne OptionExplicit ,
VB vous aurait signalé l'erreur "Variable non définie".
- Niveau de module privé : en déclarant une variable
en haut d'un module (juste en dessous d'OptionExplicit ),
en dehors d'une procédure ou d'une fonction, celle-ci devient
disponible pour toutes les procédures et fonctions du module.
Par défaut les variables déclarés avec Dim et
les constantes avec Const ont
une portée privée, mais vous pouvez le préciser
en utilisant Private. Pour utiliser
l'exemple précédent, écrivez tout en haut du module
:
Private Var2 As String
Private Const CONST1 As String = "essai"
ou
Dim Var2 As String
Const CONST1 As String = "essai"
Dans la procédure Lecture_Variable , écrivez
la ligne suivante, entre MsgBox Var1 et MsgBox
Var2 :
Attribut_Var2
Dans la fenêtre Exécution, placez votre point d'insertion dans Lecture_Variable puis
appuyez sur Entrée. Cette fois-ci,
les 3 messages auront un contenu.
- Niveau de module public : en déclarant la variable
ou la constante comme ci-dessus, mais en précisant qu'elle est
publique, elle sera alors visible depuis n'importe quel module du projet.
Ajoutez tout simplement le mot clé Public devant
la déclaration ainsi :
Public Var2 As String
Public Const CONST1 As String = "essai"
|
|
II.
Durée de vie
|
C'est la période pendant laquelle une variable contient une valeur, celle-ci
peut changer plusieurs fois pendant cette durée de vie.
Lorsque la variable est hors de portée (invisible) sa vie est finie car
elle n'a plus de valeur.
Lorsque la variable est déclarée, elle est initialisée.
Les variables numériques sont initialisées à 0 (zéro),
les chaînes de longeur variable sont initialisées à une chaîne
de longeur nulle (""), les chaînes fixes sont remplies avec le
caractère ASCII 0 (chr(0)), les variants sont initialisés à Empty,
les variables objets sont initialisées avec Nothing.
Si dans une procédure, une variable est déclarée avec Static au
lieu de Dim, la variable est hors de portée
lorsque le programme quitte la procédure, mais elle garde sa valeur (et
n'est donc pas réinitialisée) tant que le code est exécuté.
Vous pouvez alors appeler de nouveau la procédure (ou la fonction) et
retrouver sa valeur.
Écrivez dans un module les 2 procédures suivantes :
Sub Message_Incremente()
Affiche_Mess
Affiche_Mess
Affiche_Mess
End Sub
Sub Affiche_Mess()
Static N As Byte
N = N + 1
MsgBox "Ceci est le message N° : " & N
End Sub
Puis dans la fenêtre Exécution, tapez Message_Incremente puis
appuyez sur Entrée. Vous constatez que
le numéro du message est incrémenté alors que la variable
n'a qu'une portée de procédure.
|