Création dynamique de Userform

Résolu
gernoulle Messages postés 4 Date d'inscription jeudi 13 avril 2006 Statut Membre Dernière intervention 29 janvier 2007 - 16 août 2006 à 16:26
gernoulle Messages postés 4 Date d'inscription jeudi 13 avril 2006 Statut Membre Dernière intervention 29 janvier 2007 - 17 août 2006 à 10:42
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

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 31
16 août 2006 à 18:59
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
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 août 2006 à 20:04
Salut Michel ^^

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

++
0
michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 31
17 août 2006 à 06:17
bonjour Mortalino

merci pour ton message ..;o)
0
gernoulle Messages postés 4 Date d'inscription jeudi 13 avril 2006 Statut Membre Dernière intervention 29 janvier 2007
17 août 2006 à 10:42
Merci beaucoup pour ta réponse !!
J'essaie tout de suite.
0
Rejoignez-nous