Bonjour,
Voila le contexte simplifiée:
dans un userform (UserForm1) j'ai une fram (Fram1) et un bouton (CommandButton1)
lorsque je clique sur CommandButton1 ca m'ajoute un label dans Fram1. Le label s'insère en dessous du dernier label ajouté.
j'aimerai faire en sorte que lorsque je clique sur un des labels ajouté dans Fram1 cela déclenche une action comme par exemple un MsgBox avec le "caption" du label.
j'ai fait exactement comme indiqué ici : http://silkyroad.developpez.com/VBA/...icEditor/#LV-A
code UserForm1 :
code module standard :
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 Option Explicit Private Sub CommandButton1_Click() Dim nblbl As Long Dim Obj As Control Dim C1 As Classe1 Dim i As Integer Set Collect = New Collection Set Obj = Frame1.Controls.Add("Forms.Label.1", "lbl" & Frame1.Controls.Count) With Obj .Name = "label" & (Frame1.Controls.Count) .Caption = "test" & (Frame1.Controls.Count) .Height = 12 .Top = (Frame1.Controls.Count - 1) * 12 End With Frame1.ScrollHeight = Frame1.Controls.Count * 12 Set C1 = New Classe1 Set C1.monlbl = Obj Collect.Add C1 End Sub
code module de classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Option Explicit Public Collect As Collection
Mais le souci c'est que l'évènement ne fonctionne QUE sur le dernier label inséré, comment faire pour qu'il fonctionne sur l'ensemble des labels contenus dans le Frame1 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Option Explicit Public WithEvents monlbl As MSForms.Label Private Sub monlbl_Click() 'cet exemple affiche le nom et la valeur de l'objet cliqué MsgBox (Me.monlbl.Name) End Sub
Merci d'avance pour votre aide, je précise que je débute en VBA...
Partager