Création dynamique de Userform

Résolu
Messages postés
4
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2007
-
Messages postés
4
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2007
-
Bonjour,

Je cherche à créer dynamiquement un Userform sous Excel.
Je déclare ma variable  MyUserform   de type Userform, mais lorsque j'essaye de la charger et l'afficher, j'ai un message d'erreur : "Variable objet ou variable de bloc with non définie"

Public MyUserform As UserForm

Private Sub CommandButton10_Click()


    MyUserform.Height = 180
    MyUserform.Weight = 240
    Load MyUserform
    MyUserform.Show



End Sub


J'ai essayé de passer par CreateObject mais je n'ai pas trouvé de class se référant aux Userforms.

Si quelqu'un peu m'aider...
Merci d'avance !!!

4 réponses

Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
29
bonjour

j'espere que cet exemple pourra t'aider

Option Explicit
Dim Usf As Object


Sub lancementProcedure()
Dim X As Object
Dim i As Integer
Dim strList As String


strList = "ListBox1"
Set X = creationUserForm_Et_listBox_Dynamique(strList)


For i = 1 To 10
X.Controls(strList).AddItem "Donnee " & i
Next i


X.Show


ThisWorkbook.VBProject.VBComponents.Remove Usf
Set Usf = Nothing
End Sub




Function creationUserForm_Et_listBox_Dynamique(nomListe As String) As Object
Dim ObjListBox As Object
Dim j As Integer


  Set Usf = ThisWorkbook.VBProject.VBComponents.Add(3)
  With Usf
    .Properties("Caption") = "Mon UserForm"
    .Properties("Width") = 300
    .Properties("Height") = 200
  End With
 
Set ObjListBox = Usf.Designer.Controls.Add("Forms.ListBox.1")
     
With ObjListBox.Left 20: .Top 10: .Width = 90: .Height = 140
.Name = nomListe
.Object.ColumnCount = 1
.Object.ColumnWidths = 70
End With


With Usf.CodeModule
j = .CountOfLines
.insertlines j + 1, "Sub " & nomListe & "_Click()"
.insertlines j + 2, "If Not " & nomListe & ".ListIndex = -1 Then MsgBox " & nomListe
.insertlines j + 3, "End Sub"
End With


VBA.UserForms.Add (Usf.Name)
Set creationUserForm_Et_listBox_Dynamique = UserForms(UserForms.Count - 1)
 
End Function

bonne soiree
michel
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut Michel ^^

du grand art, tu fournis en plus l'écriture des procédures. C'est tout simplement parfait ;)

++
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
29
bonjour Mortalino

merci pour ton message ..;o)
Messages postés
4
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2007

Merci beaucoup pour ta réponse !!
J'essaie tout de suite.