Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour
Quand j'ouvre un userforme Je voudrais récupérer la value de certaines txtbox dans une variable pour pouvoir la comparer si changement de cette txtbox.
j'ai essayé avec des variables static, public je n'arrive pas à faire fonctionner
pour exemple
Private Sub UserForm_Initialize
Dim ValUse as integer
ValUse=TxtB1.value
End Sub
j'ai un bouton de validation :
Private Sub BtnValidation_Click()
If ValUse<>TxtB1. Value then .....
a ce moment la Variable ValUse n'est pas reconnue, pourquoi ?
Si votre variable doit être utilisée par des procédures ou fonctions de votre module, il vous faut la déclarer en tête de module. Et cela n'a rien à voir avec les variables statiques.
Si vous la déclarez Public en tête de module, elle pourra être utilisée à partir d'autres module,
Public ne peut pas être déclaré dans le corps d'une procédure (sub) ou fonction (function)
Par contre une procédure peut être déclarée Public ou Private
Si vous la déclarez Private en tête de module, elle ne sera utilisable qu'à l'intérieur du module qui la contient
Toutes les variables déclarées dans le corps d'une procédure ou fonction, ne sont pas utilisables ailleurs de dans la procédure ou fonction qui les déclarent. Elles disparraissent après le End sub ou End function
Si vous mettez le mot clef Static avant sa déclaration à l'intérieur d'une procédure ou fonction, la variable conserve alors sa dernière valeur, d'un appel à l'autre. La variable devient persistante.
Mettez ces quelques lignes dans un module vierge et lancez les en mode pas à pas (F8) après avoir ouvert la fenêtre d'exécution (CTRL+G)
Vous verrez qu'au premier appel de la macro :
i = 1 j = 1 k = 2
Au deuxième appel
i = 2 j = 1 k = 4
i a été modifié à chaque appel de la macro et affiche sa nouvelle valeur
idem pour k
i déclaré Static conserve sa valeur mais n'est pas utilisable par une autre procédure ou fonction
k déclaré en tête de module conserve sa valeur le temps de vie du module et peut être utilisé dans d'autres procédure ou fonction
j déclaré uniquement dans la procédure ne conserve pas sa valeur et n'est utilisable que dans la procédure.
VB:
Option Explicit
Dim k As Integer
Sub TestVariable1()
Static i As Integer
Dim j
i = i + 1
j = j + 1
k = i * 2
Debug.Print "i = " & i, "j = " & j, "k = " & k
End Sub
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD