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) :

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
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
 
 
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
Merci d'avance pour l'aide que vous pourrez m'apporter.

Si besoin je peux joindre le fichier de test

Christophe