Bonjour tou(te)s,
Ca fait déjà un bon bout de temps que j'essaye de le résoudre (le problème), et jusqu'à présent j’ai abandonné, cette fois je voudrais arriver au bout. C’est assez pointu et je ne sais pas si vous pourrez m’aider.
J’ai une Classe nommée CL_Frame, elle me sert à grouper des Frames en collection, là pas de problème ça fonctionne et les événements du groupe fonctionnent parfaitement.
Seulement, pour ne pas devoir traiter les événements dans la classe je voudrais les renvoyer dans l’appelant, là aussi ça fonctionne bien… mais uniquement pour la dernière instance de la classe ??
Un peu de code…
Dans le module de classe,
J’ai déclaré l’instance de la classe en Public.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public WithEvents GroupImages As MSForms.Frame Public Event FrameClick(ByVal Index As Integer) Private Sub GroupImages_Click() RaiseEvent FrameClick(GroupImages.Tag) End Sub
Dans l’UF
Avec 3 Frames l'événement click n'est généré que pour le Frame3 et pas pour les autres !
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 Dim CollectFrame As Collection Private WithEvents mFrame As CL_Frame Private Sub UserForm_Initialize() Dim Ctl As Control 'Initialisation de la collection. Set mFrame = Nothing Set CollectFrame = New Collection 'boucle sur les objets de l'UF For Each Ctl In Me.Controls 'verifie s'il s'agit d'un Frame If TypeOf Ctl Is MSForms.Frame Then Set mFrame = New CL_Frame Set mFrame.GroupImages = Ctl CollectFrame.Add mFrame End If Next Ctl End Sub Private Sub mframe_FrameClick(ByVal Index As Integer) Stop End Sub
Qu'est-ce que j'oublie ?
Merci de vos réponses éclairées.
A+
Partager