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 :
Public FormePermissions As Object, NouveauControl As Control
Initialisation de Userform1 :
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 :
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 :
1 2 3 4
| Private Sub BoutGestPerm_Click()
Unload UsersMangt
AutorisUtilisateurs.Show
End Sub |
Dans Userform2 :
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
Partager