Bonjour, de nouveau.
j'avance bien sur la collection qui répondait à ma demande précédente.
Pour valider le scénario de mon projet, j'ai fait un petit bout de code (je ne vise pas l'académie des sciences avec ça) avec un classe qui comprend juste 2 méthodes et une userform avec 2 boutons censés utiliser chacun une seules des deux méthodes.
le bouton lire fonctionne (normal, j'instancie dedans)
Pb le deuxième bouton ne fonctionne pas, ce que je vois bien dans les fenêtres execution et variables locales.
d'où ma question comment conserver et utiliser les variables d'une classe. autrement dit quel moyen pour que la portée des variables d'une classe soit au delà de la procédure qui la crée.
Il y a plein d'exemples très jolis mais avec une seule procédure qui travaille avec la classe.
petit détail : nomComplet c'est juste nom & prenom pour vérifier que j'ai bien compris property
dans la userform :
et dans la usform :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Sub BtnLire_Click() 'creation d'un classe nom Dim NouvNom As cNom Set NouvNom = New cNom NouvNom.Nom = Usfcli.TxtNom NouvNom.prenom = Usfcli.TxtPrenom NouvNom.lire End Sub Public Sub BtnEcrire_Click() ' ça marche mais c'est une nouvelle instance 'Set NouvNom = New cNom 'If NouvNom Is Nothing Then ' MsgBox "Variable non initialisée." 'Else ' MsgBox "Variable initialisée." 'End If 'NouvNom.ecrire NouvNom.ecrire 'ça marche pas: 'il ne retourve pas la classe : message "objet requis" End Sub
la usform elle meme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Property Get Nomcomplet() As String Nomcomplet = mPrenom & " " & mNom End Property '### méthodes ### Public Sub lire() Sheets(1).Range("A1").Value = Nomcomplet MsgBox "ça marche" End Sub Public Sub ecrire() Sheets(1).Range("A2").Value = Nomcomplet End Sub Private Sub Class_Initialize() MsgBox "classe initialisée" End Sub
![]()
Partager