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,
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
J’ai déclaré l’instance de la classe en Public.
Dans l’UF
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
Avec 3 Frames l'événement click n'est généré que pour le Frame3 et pas pour les autres !
Qu'est-ce que j'oublie ?
Merci de vos réponses éclairées.
A+