Bonjour,

Contexte :
Par l'évènement "Click" d'un bouton dans un Userform1, j'ai créé des contrôles dynamiquement dans un Userform2, à l'aide de la proriété "Designer".
A l'initialisation de Userform1, je récupère les propriétés des contrôles ainsi créés dans une Listbox de ce Userfom1.
Lorsque je décharge Userform1 et affiche Userform2, je vois les contrôles ainsi créés et je souhaite revenir au Userform1 pour continuer la création de contrôle dynamique.

Trois problèmes surviennent :

Problème 1 :
Lorsque je reviens à Userform1, l'évènement "Initialize" me renvoie une erreur d'exécution '91' à la ligne de code où s'éxécute une boucle qui porte sur les variables utilisée pour renvoyer ces Objets controle.

Problème 2 :
J'ai la même erreur ('91') lorsque je souhaite continuer la création des contrôles après avoir consulté Userform2

Problème 3 :
J'ai une erreur d'éxécution '-2147319767 (80028029)' réf. future non valide...
aléatoire lorsque je veux continuer la création de contrôle après fermeture
et réouverture de mon projet.

Mon code est le suivant :

Variables déclarées :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public FormePermissions As Object, NouveauControl As Control
Initialisation de Userform1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub UserForm_Initialize()
    Set FormePermissions = ThisWorkbook.VBProject.VBComponents("AutorisUtilisateurs")
    For Each NouveauControl In FormePermissions.Designer.Controls 'Problème 1 à l'exécution de cette ligne
        If TypeName(NouveauControl) = "Label" Then
            ListeDesUtil.AddItem NouveauControl.Caption
        Else
        End If
    Next
    Set FormePermissions = Nothing
    Set NouveauControl = Nothing
End Sub
Code de l'évènement "Click" ou je crée le contrôle :

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
Private Sub AjoutNouvUtil_Click()
    If NomNouvUtil.Text <> "" Then
        ListeDesUtil.AddItem NomNouvUtil.Text
        Set FormePermissions = ThisWorkbook.VBProject.VBComponents("AutorisUtilisateurs") 'Problème 2 à l'éxécution de cette ligne
        Set NouveauControl = FormePermissions.Designer.Controls.Add("Forms.Label.1")
        With NouveauControl
            .Name = Replace(NomNouvUtil.Text, " ", "") & "User"
            .Caption = NomNouvUtil.Text
            .Height = 15
            .Width = 250
            .Font.Size = 11
            .Font.Bold = True
        End With
        NomNouvUtil.Text = ""
        PositHaut = EspaceGene
        PositGche = EspaceGene
        For Each NouveauControl In FormePermissions.Designer.Controls
            If TypeName(NouveauControl) = "Label" Then
                NouveauControl.Move Top:=PositHaut, Left:=PositGche
                PositHaut = PositHaut + 15 + EspCNPage1
            Else
            End If
        Next
    Else
        MsgBox "A SPRINT Username is required." _
        & Chr(10) & Chr(10) & "Thanks to enter the new SPRINT Username" _
        & Chr(10) & "in the entitled textbox : 'New Username :'" _
        , 32, "SPRINT USERNAME REQUIRED !"
    End If
    Set FormePermissions = Nothing
    Set NouveauControl = Nothing
End Sub
Navigation entre les Userform1 et 2 :

Dans Userform1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub BoutGestPerm_Click()
    Unload UsersMangt
    AutorisUtilisateurs.Show
End Sub
Dans Userform2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub BoutRetGestUtil_Click()
    Unload AutorisUtilisateurs
    UsersMangt.Show
End Sub
SVP, quelqu'un peut-il m'indiquer ce qui ne fonctionne pas et m'aider à trouver
une solution ?
Je remercie vivement toute l'équipe de "Developpez..." pour les réponses et formations qui m'aide continuellement.

Pour ce cas, "je sèche".

Merci, Cordialement.

Stéphane