Bonjour le forum,
je suis bloqué sur un bug que je ne sais résoudre.
Je crée dynamiquement des boutons dans un userform.
je gère l'event de clic dans un module de classe tout simple.
Quand j'exécute le userform directement, les clics ne sont pas pris en compte.
Par contre si j'exécute pas à pas le code puis que j'ouvre mes collections dans l'explorateur de variable locale et que je fini l'exécution, CELA FONCTIONNE...
C'est à n'y rien comprendre.
Je débute dans l'utilisation des modules de classe mais j'ai une certaine expérience en VBA.
Le code du userform (c'est un de test) :
Le code du module de classe (j'affiche le nom si clic ou si survole) :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 Private Sub UserForm_Initialize() Dim i, x As Integer 'Déclaration des collections : Dim Collect_CommandButton As Collection Dim ClBouton As Collection 'Déclaration des instances de classe : Dim mCommandButton As Mod_classe_collection 'Crée les collections de classe : Set Collect_CommandButton = New Collection 'Crée les collections d'objet : Set ClBouton = New Collection For i = 1 To 5 Set ctl_Clic = Controls.Add("Forms.CommandButton.1") ctl_Clic.Left = 20 ctl_Clic.Top = x ctl_Clic.Width = 80 ctl_Clic.Height = 20 ctl_Clic.Name = "CommandButton_" & i Collect_CommandButton.Add "btn" & i, CStr("CommandButton_" & i) Set mCommandButton = New Mod_classe_collection Set mCommandButton.clic_choix = ctl_Clic ClBouton.Add mCommandButton mCommandButton.clic_choix.Tag = CStr("CommandButton_" & i) x = x + 21 Next i End Sub
Merci d'avance pour l'aide que vous pourrez m'apporter.
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 Public WithEvents clic_choix As MSForms.CommandButton Private Sub clic_choix_Click() test.lbl2.Caption = clic_choix.Name End Sub Private Sub clic_choix_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single) test.lbl1.Caption = clic_choix.Name End Sub
Si besoin je peux joindre le fichier de test
Christophe
Partager