Présentation de la portée et de la visibilité
L'étendue fait référence à la disponibilité d'une variable, d'une constante ou d'une procédure pour une autre procédure. Il existe trois niveaux d'étendue : procédure, module privé et module public.
Vous déterminez l'étendue d'une variable lorsque vous la déclarez. Il est recommandé de déclarer toutes les variables explicitement de façon à éviter les erreurs de conflit de noms entre les variables avec des étendues différentes.
Étendue au niveau de la procédure
Une variable ou une constante définie dans une procédure n'est pas visible hors de cette procédure. Seule la procédure qui contient la déclaration de la variable peut l'utiliser. Dans l'exemple ci-dessous, la première procédure affiche une boîte de message contenant une chaîne. La deuxième procédure affiche une boîte de message vide, car la variable est locale pour la première procédure.
Sub LocalVariable()
Dim strMsg As String
strMsg = "This variable can't be used outside this procedure."
MsgBox strMsg
End Sub
Sub OutsideScope()
MsgBox strMsg
End Sub
Étendue privée au niveau du module
Définissez des variables et des constantes au niveau d'un module dans la section Déclarations d'un module. Les variables au niveau d'un module peuvent être publiques ou privées. Les variables publiques sont disponibles pour toutes les procédures dans tous les modules d'un projet ; les variables privées ne sont disponibles que pour les procédures de ce module. Par défaut, les variables déclarées avec l’instruction Dim dans la section Déclarations sont délimitées comme privées. Cependant, en faisant précéder la variable du mot clé Private l'étendue est évidente dans votre code.
Dans l’exemple suivant, la variable strMsg
de chaîne est disponible pour toutes les procédures définies dans le module. Lorsque la deuxième procédure est appelée, elle affiche le contenu de la variable strMsg
de chaîne dans une boîte de dialogue.
' Add following to Declarations section of module.
Private strMsg As String
Sub InitializePrivateVariable()
strMsg = "This variable can't be used outside this module."
End Sub
Sub UsePrivateVariable()
MsgBox strMsg
End Sub
Remarque
Les procédures publiques d'un module standard ou d'un module de classe sont disponibles pour tout projet de référencement. Pour limiter l’étendue de toutes les procédures d’un module au projet actuel, ajoutez une instruction Option Private Module à la section Déclarations du module. Les variables et procédures publiques seront toujours disponibles pour les autres procédures du projet actif, mais pas pour les projets de référencement.
Étendue publique au niveau du module
Si vous déclarez une variable au niveau d'un module comme étant publique, elle est disponible pour toutes les procédures dans le projet. Dans l’exemple suivant, la variable de chaîne peut être utilisée par n’importe quelle procédure dans n’importe quel module du projet.
' Include in Declarations section of module.
Public strMsg As String
Toutes les procédures sont publiques par défaut, excepté les procédures d'événement. Lorsque Visual Basic crée une procédure événementielle, le privatemot clé est automatiquement inséré avant la déclaration de procédure. Pour toutes les autres procédures, vous devez déclarer explicitement la procédure avec le mot clé privé si vous ne souhaitez pas qu’elle soit publique.
Utilisez des procédures, des variables et des constantes publiques définies dans des modules standard ou des modules de classe à partir de projets de référencement. Cependant, vous devez tout d'abord définir une référence au projet dans lequel elles sont définies.
Les procédures, variables et constantes publiques définies dans d’autres modules que les modules standard ou de classe, tels que les modules de formulaire ou de rapport, ne sont pas disponibles pour référencer les projets, car ces modules sont privés au projet dans lequel ils résident.
Voir aussi
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.