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 mot cléPrivate 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é Private 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.