Création dynamique de Userform [Résolu]

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

Votre réponse

4 réponses

Meilleure réponse
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Dernière intervention
12 octobre 2008
16 août 2006 à 18:59
3
Merci
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

Merci michelxld 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de michelxld
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
16 août 2006 à 20:04
0
Merci
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
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Dernière intervention
12 octobre 2008
17 août 2006 à 06:17
0
Merci
bonjour Mortalino

merci pour ton message ..;o)
Commenter la réponse de michelxld
Messages postés
4
Date d'inscription
jeudi 13 avril 2006
Dernière intervention
29 janvier 2007
17 août 2006 à 10:42
0
Merci
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.