Easy-Micro


ESPACEMEMBRE Microsoft Visual Basic
Portée

Portée d'une variable en VBA

L'endroit et la façon dont vous déclarez explicitement une variable avec les mots clefs Dim, Private, Static et Public déterminera sa portée, c'est à dire les parties du code de votre projet où elle sera reconnue.

Pour maîtriser parfaitement la porté d'une variable, et faire en sorte qu'une même variable puisse être utilisée dans diverses procédures, il faut avoir recours à la déclaration explicite (voir plus bas). Dans ce cas, la portée dépend de l'endroit où la variable est déclarée :

Public (feuille ou module 1)
 |
 |        Private/Dim (feuille ou module 2)
 |         |
 |         |   Sub
 |         |    Dim/Private/Static
 |         |    |
 |         |    |
 |         |    |
 |         |    |
 |         |   End Sub
 |         |
 |         |   Function
 |         |    Dim/Private/Static
 |         |    |
 |         |    |
 |         |    |
 |         |    |
 |         |   End Function
 |         |
 |
 |

et dépend donc aussi du mot clef avec lequel elle est déclarée.

Visual Basic permet l'utilisation d'une variable qui n'a pas été déclarée préalablement, c'est une 'variable implicite'. Au contraire, les variables préalablement déclarées sont dites 'variables explicites'.

Note : L'utilisation de variables implicites n'est pas possible si 'Option Explicit' est employé. En effet, 'Option Explicit' impose la déclaration explicite d'une variable avant son utilisation, dans le cas contraire, une erreur est provoquée. L'utilisation de cette option est d'ailleurs fortement recommandée !

Une variable implicite n'est connue qu'à l'intérieur de la fonction ou de la procédure où elle a été initialement utilisée. Une variable implicite est donc locale à cette fonction/procédure. Si l'on fait référence à cette variable dans une autre procédure, il s'agira d'une variable différente.

Exemple de passage de variable :
' Contenu du Module 1 :

Option Explicit
Public montexte As String

Public Sub faispasser() ' Public est optionel puisque par defaut
montexte = "hello"
Range("B4").Value = montexte
End Sub

' Contenu du Module 2 :

Option Explicit

Sub faispasser_aussi()
Range("B5").Value = montexte
End Sub


Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Lundi 18 mars 2019 - Semaine 12 - Saint Cyrille de Jérusalem (Demain: Saint Joseph)
Aujourd'hui, c'est l'anniversaire de Luc Besson (1959-60 ans), réalisateur et producteur français, de Xavier Deluc (1958), acteur français et de Laetitia Hallyday (1975). Autre 18 mars: 1314 : supplice de Jacques de Molay, grand maître des Templiers.
Haut de page Easy-Micro