Création dynamique de Userform [Résolu]

gernoulle 4 Messages postés jeudi 13 avril 2006Date d'inscription 29 janvier 2007 Dernière intervention - 16 août 2006 à 16:26 - Dernière réponse : gernoulle 4 Messages postés jeudi 13 avril 2006Date d'inscription 29 janvier 2007 Dernière intervention
- 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 !!!
Afficher la suite 

Votre réponse

4 réponses

michelxld 402 Messages postés vendredi 6 août 2004Date d'inscription 12 octobre 2008 Dernière intervention - 16 août 2006 à 18:59
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de michelxld
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 16 août 2006 à 20:04
0
Utile
Salut Michel ^^

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

++
Commenter la réponse de mortalino
michelxld 402 Messages postés vendredi 6 août 2004Date d'inscription 12 octobre 2008 Dernière intervention - 17 août 2006 à 06:17
0
Utile
bonjour Mortalino

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.