Copier dynamiquement les contrôles d'une page de Multipage

Bonjour à tous,

Je prépare une appli Excel de cahier d'entraînement en musculation, mais je bloque sur une fonctionnalité qui m'oblige à me pencher sur les modules de classe. Mon problème est le suivant :

Dans l'UserBox d'édition des séances, sur la première page du Multipage répertoriant les exercices, la ListBox "Exercices" se remplit en fonction du muscle choisi dans une ComboBox, en allant chercher les exercices correspondant, créés au préalable sur une autre feuille. Lorsque je rajoute une page au Multipage, j'arrive à faire en sorte que les contrôles soient copiés, et même à remplir la nouvelle ComboBox du choix de muscle, mais pas la ListBox des exercices. (Je vous invite à regarder le fichier joint pour plus de clarté).

En recyclant des infos trouvées ça et là sur internet, j'ai pensé à créer un module de classe mais rien n'y fait, la ListBox reste vide.

Merci d'avance pour vos suggestions !

Voci le code de l'UserBox :

Private Sub UserForm_Initialize()
    'Attribue la collection à la variable "Collect".
    Set Collect = New Collection
End Sub

'Détecte l'ajout de contrôle dans le multipage.
Private Sub MultiPage1_AddControl(ByVal Index As Long, ByVal Control As MSForms.Control)
    Dim Cl As Classe1
    'Vérifie si le contrôle est une ComboBox.
    If TypeOf Control Is MSForms.ComboBox Then
        'Ajoute l'objet dans la classe.
        Set Cl = New Classe1
        Set Cl.CbBox = Control
        Collect.Add Cl
    End If
End Sub

'Evenement "Avant la Fermeture" du UserForm.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    'Libère l'espace mémoire.
    Set Collect = Nothing
End Sub

Le code de la Classe1 :

Option Explicit

Public WithEvents CbBox As MSForms.ComboBox

'Pour gérer l'évènement change des objets type ComboBox.
Private Sub CbBox_Change()

    Dim ctrl As MSForms.Control
    Dim muscle As String, ligne_premier_exo As Integer, ligne_dernier_exo As Integer
    muscle = CbBox.Value
    ligne_premier_exo = Sheets("Liste et création d'exercices").Range("G9:G1048576").Find(muscle, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlNext).Row + 1
    ligne_dernier_exo = Sheets("Liste et création d'exercices").Range("G9:G1048576").Find(muscle,
LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious).Row

    For Each ctrl In UserForm2.MultiPage1.Pages(UserForm2.MultiPage1.Value).Controls
            If TypeOf ctrl Is MSForms.ListBox Then
                    ctrl.Clear
                    For i = ligne_premier_exo To ligne_dernier_exo
                            ctrl.AddItem Sheets("Liste et création d'exercices").Cells(i, 4)
                    Next
            End If
    Next

End Sub

Et le module pour la collection :

Option Explicit

Public Collect As Collection

Bonjour et bienvenu(e)

A vérifier

Merci beaucoup ! ça marche.

Réponse rapide en plus...

Je vais essayer de comprendre où se cache le détail qui fait la différence.

Rechercher des sujets similaires à "copier dynamiquement controles page multipage"