Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Sans préjuger du résultat de la proposition qui t'a déjà été faite (à laquelle
j'avais aussi pensé mais que je n'arrive pas à faire fonctionner), je te propose
une autre approche : remplir tes listbox par l'intermédiaire de l'événement
Initialize du UserForm. Ça peut donner quelque chose comme ça :
'''''''''''''''''''''''''
Sub essai()
NomBook = ThisWorkbook.Name
'renseignement du tableau
ReDim Tabl(1 To 3)
For i = 1 To 3: Tabl(i) = "xxx" & i: Next i
'création d'un UserForm
Set form = ThisWorkbook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
' On Error Resume Next
' Application.Workbooks(NomBook).VBProject.VBComponents.Remove_
' Application.Workbooks(NomBook).VBProject.VBComponents ("UserFormAmoi")
' Application.Workbooks(NomBook).Save
' On Error GoTo 0
With form
.Properties("Name") = "UserForm6"
End With
'ajoute les ListBox au UserForm
For i = 1 To 3
Set NewListBox = form.Designer.Controls.Add("Forms.listbox.1")
Next i
'************************
With form.codemodule
.insertlines 1, "Sub UserForm_Initialize()"
.insertlines 2, " For i=1 To 3"
.insertlines 3, " ListBox1.AddItem i"
.insertlines 4, " ListBox2.AddItem i"
.insertlines 5, " ListBox3.AddItem i"
.insertlines 6, " Next i"
.insertlines 7, "End Sub"
End With
'*************************
'affiche le UserForm
' Load VBA.UserForms.Add(Form.Name)
VBA.UserForms.Add(form.Name).Show
End Sub
'''''''''''''''''''''''''
----------
Ange Ounis
----------Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Sans préjuger du résultat de la proposition qui t'a déjà été faite (à laquelle
j'avais aussi pensé mais que je n'arrive pas à faire fonctionner), je te propose
une autre approche : remplir tes listbox par l'intermédiaire de l'événement
Initialize du UserForm. Ça peut donner quelque chose comme ça :
'''''''''''''''''''''''''
Sub essai()
NomBook = ThisWorkbook.Name
'renseignement du tableau
ReDim Tabl(1 To 3)
For i = 1 To 3: Tabl(i) = "xxx" & i: Next i
'création d'un UserForm
Set form = ThisWorkbook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
' On Error Resume Next
' Application.Workbooks(NomBook).VBProject.VBComponents.Remove_
' Application.Workbooks(NomBook).VBProject.VBComponents ("UserFormAmoi")
' Application.Workbooks(NomBook).Save
' On Error GoTo 0
With form
.Properties("Name") = "UserForm6"
End With
'ajoute les ListBox au UserForm
For i = 1 To 3
Set NewListBox = form.Designer.Controls.Add("Forms.listbox.1")
Next i
'************************
With form.codemodule
.insertlines 1, "Sub UserForm_Initialize()"
.insertlines 2, " For i=1 To 3"
.insertlines 3, " ListBox1.AddItem i"
.insertlines 4, " ListBox2.AddItem i"
.insertlines 5, " ListBox3.AddItem i"
.insertlines 6, " Next i"
.insertlines 7, "End Sub"
End With
'*************************
'affiche le UserForm
' Load VBA.UserForms.Add(Form.Name)
VBA.UserForms.Add(form.Name).Show
End Sub
'''''''''''''''''''''''''
----------
Ange Ounis
----------
Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
Sans préjuger du résultat de la proposition qui t'a déjà été faite (à laquelle
j'avais aussi pensé mais que je n'arrive pas à faire fonctionner), je te propose
une autre approche : remplir tes listbox par l'intermédiaire de l'événement
Initialize du UserForm. Ça peut donner quelque chose comme ça :
'''''''''''''''''''''''''
Sub essai()
NomBook = ThisWorkbook.Name
'renseignement du tableau
ReDim Tabl(1 To 3)
For i = 1 To 3: Tabl(i) = "xxx" & i: Next i
'création d'un UserForm
Set form = ThisWorkbook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
' On Error Resume Next
' Application.Workbooks(NomBook).VBProject.VBComponents.Remove_
' Application.Workbooks(NomBook).VBProject.VBComponents ("UserFormAmoi")
' Application.Workbooks(NomBook).Save
' On Error GoTo 0
With form
.Properties("Name") = "UserForm6"
End With
'ajoute les ListBox au UserForm
For i = 1 To 3
Set NewListBox = form.Designer.Controls.Add("Forms.listbox.1")
Next i
'************************
With form.codemodule
.insertlines 1, "Sub UserForm_Initialize()"
.insertlines 2, " For i=1 To 3"
.insertlines 3, " ListBox1.AddItem i"
.insertlines 4, " ListBox2.AddItem i"
.insertlines 5, " ListBox3.AddItem i"
.insertlines 6, " Next i"
.insertlines 7, "End Sub"
End With
'*************************
'affiche le UserForm
' Load VBA.UserForms.Add(Form.Name)
VBA.UserForms.Add(form.Name).Show
End Sub
'''''''''''''''''''''''''
----------
Ange Ounis
----------Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
.InsertLines Line + 5, "With ListBox & i"
.InsertLines Line + 6, ".AddItem Tabl(j)"
.InsertLines Line + 7, "End With"
.InsertLines Line + 5, "Me.Controls(""ListBox"" & i).AddItem Tabl(j)"
Merci Ange Ounis de ta réponse. Elle m'a fait avancer. J'obtiens maintenant
des listbox qui ne sont plus vides. Mais le résultat final est difficile à
mettre au point. En réalité, je n'ai pas toujours trois listbox, mais un
nombre variable. Et c'est là que le système ne veut plus, lorsque je mes en
variable le N° de la listbox. Ca donne cela :
'ajoute un gestionnaire d'événement sub pour le userform
With Form.CodeModule
Line = .CountOfLines
.InsertLines Line + 1, "Sub UserForm_Initialize()"
.InsertLines Line + 2, "Dim i As Integer, j As Integer"
.InsertLines Line + 3, "For i = 1 To NbListBox"
.InsertLines Line + 4, "For j = 1 To Nbxx"
.InsertLines Line + 5, "With ListBox & i"
.InsertLines Line + 6, ".AddItem Tabl(j)"
.InsertLines Line + 7, "End With"
.InsertLines Line + 8, "Next j"
.InsertLines Line + 9, "Next i"
.InsertLines Line + 10, "End Sub"
C'est ce fameux ListBox & i qui ne fonctionne pas. J'ai Erreur d'exécution
424 : Objet requis.
Quoi est-ce encore que ça ? As-tu une idée ?
Merci pour ton aideSans préjuger du résultat de la proposition qui t'a déjà été faite (à laquelle
j'avais aussi pensé mais que je n'arrive pas à faire fonctionner), je te propose
une autre approche : remplir tes listbox par l'intermédiaire de l'événement
Initialize du UserForm. Ça peut donner quelque chose comme ça :
'''''''''''''''''''''''''
Sub essai()
NomBook = ThisWorkbook.Name
'renseignement du tableau
ReDim Tabl(1 To 3)
For i = 1 To 3: Tabl(i) = "xxx" & i: Next i
'création d'un UserForm
Set form = ThisWorkbook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
' On Error Resume Next
' Application.Workbooks(NomBook).VBProject.VBComponents.Remove_
' Application.Workbooks(NomBook).VBProject.VBComponents ("UserFormAmoi")
' Application.Workbooks(NomBook).Save
' On Error GoTo 0
With form
.Properties("Name") = "UserForm6"
End With
'ajoute les ListBox au UserForm
For i = 1 To 3
Set NewListBox = form.Designer.Controls.Add("Forms.listbox.1")
Next i
'************************
With form.codemodule
.insertlines 1, "Sub UserForm_Initialize()"
.insertlines 2, " For i=1 To 3"
.insertlines 3, " ListBox1.AddItem i"
.insertlines 4, " ListBox2.AddItem i"
.insertlines 5, " ListBox3.AddItem i"
.insertlines 6, " Next i"
.insertlines 7, "End Sub"
End With
'*************************
'affiche le UserForm
' Load VBA.UserForms.Add(Form.Name)
VBA.UserForms.Add(form.Name).Show
End Sub
'''''''''''''''''''''''''
----------
Ange Ounis
----------Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
.InsertLines Line + 5, "With ListBox & i"
.InsertLines Line + 6, ".AddItem Tabl(j)"
.InsertLines Line + 7, "End With"
.InsertLines Line + 5, "Me.Controls(""ListBox"" & i).AddItem Tabl(j)"
Merci Ange Ounis de ta réponse. Elle m'a fait avancer. J'obtiens maintenant
des listbox qui ne sont plus vides. Mais le résultat final est difficile à
mettre au point. En réalité, je n'ai pas toujours trois listbox, mais un
nombre variable. Et c'est là que le système ne veut plus, lorsque je mes en
variable le N° de la listbox. Ca donne cela :
'ajoute un gestionnaire d'événement sub pour le userform
With Form.CodeModule
Line = .CountOfLines
.InsertLines Line + 1, "Sub UserForm_Initialize()"
.InsertLines Line + 2, "Dim i As Integer, j As Integer"
.InsertLines Line + 3, "For i = 1 To NbListBox"
.InsertLines Line + 4, "For j = 1 To Nbxx"
.InsertLines Line + 5, "With ListBox & i"
.InsertLines Line + 6, ".AddItem Tabl(j)"
.InsertLines Line + 7, "End With"
.InsertLines Line + 8, "Next j"
.InsertLines Line + 9, "Next i"
.InsertLines Line + 10, "End Sub"
C'est ce fameux ListBox & i qui ne fonctionne pas. J'ai Erreur d'exécution
424 : Objet requis.
Quoi est-ce encore que ça ? As-tu une idée ?
Merci pour ton aide
Sans préjuger du résultat de la proposition qui t'a déjà été faite (à laquelle
j'avais aussi pensé mais que je n'arrive pas à faire fonctionner), je te propose
une autre approche : remplir tes listbox par l'intermédiaire de l'événement
Initialize du UserForm. Ça peut donner quelque chose comme ça :
'''''''''''''''''''''''''
Sub essai()
NomBook = ThisWorkbook.Name
'renseignement du tableau
ReDim Tabl(1 To 3)
For i = 1 To 3: Tabl(i) = "xxx" & i: Next i
'création d'un UserForm
Set form = ThisWorkbook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
' On Error Resume Next
' Application.Workbooks(NomBook).VBProject.VBComponents.Remove_
' Application.Workbooks(NomBook).VBProject.VBComponents ("UserFormAmoi")
' Application.Workbooks(NomBook).Save
' On Error GoTo 0
With form
.Properties("Name") = "UserForm6"
End With
'ajoute les ListBox au UserForm
For i = 1 To 3
Set NewListBox = form.Designer.Controls.Add("Forms.listbox.1")
Next i
'************************
With form.codemodule
.insertlines 1, "Sub UserForm_Initialize()"
.insertlines 2, " For i=1 To 3"
.insertlines 3, " ListBox1.AddItem i"
.insertlines 4, " ListBox2.AddItem i"
.insertlines 5, " ListBox3.AddItem i"
.insertlines 6, " Next i"
.insertlines 7, "End Sub"
End With
'*************************
'affiche le UserForm
' Load VBA.UserForms.Add(Form.Name)
VBA.UserForms.Add(form.Name).Show
End Sub
'''''''''''''''''''''''''
----------
Ange Ounis
----------
Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide
.InsertLines Line + 5, "With ListBox & i"
.InsertLines Line + 6, ".AddItem Tabl(j)"
.InsertLines Line + 7, "End With"
.InsertLines Line + 5, "Me.Controls(""ListBox"" & i).AddItem Tabl(j)"
Merci Ange Ounis de ta réponse. Elle m'a fait avancer. J'obtiens maintenant
des listbox qui ne sont plus vides. Mais le résultat final est difficile à
mettre au point. En réalité, je n'ai pas toujours trois listbox, mais un
nombre variable. Et c'est là que le système ne veut plus, lorsque je mes en
variable le N° de la listbox. Ca donne cela :
'ajoute un gestionnaire d'événement sub pour le userform
With Form.CodeModule
Line = .CountOfLines
.InsertLines Line + 1, "Sub UserForm_Initialize()"
.InsertLines Line + 2, "Dim i As Integer, j As Integer"
.InsertLines Line + 3, "For i = 1 To NbListBox"
.InsertLines Line + 4, "For j = 1 To Nbxx"
.InsertLines Line + 5, "With ListBox & i"
.InsertLines Line + 6, ".AddItem Tabl(j)"
.InsertLines Line + 7, "End With"
.InsertLines Line + 8, "Next j"
.InsertLines Line + 9, "Next i"
.InsertLines Line + 10, "End Sub"
C'est ce fameux ListBox & i qui ne fonctionne pas. J'ai Erreur d'exécution
424 : Objet requis.
Quoi est-ce encore que ça ? As-tu une idée ?
Merci pour ton aideSans préjuger du résultat de la proposition qui t'a déjà été faite (à laquelle
j'avais aussi pensé mais que je n'arrive pas à faire fonctionner), je te propose
une autre approche : remplir tes listbox par l'intermédiaire de l'événement
Initialize du UserForm. Ça peut donner quelque chose comme ça :
'''''''''''''''''''''''''
Sub essai()
NomBook = ThisWorkbook.Name
'renseignement du tableau
ReDim Tabl(1 To 3)
For i = 1 To 3: Tabl(i) = "xxx" & i: Next i
'création d'un UserForm
Set form = ThisWorkbook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
' On Error Resume Next
' Application.Workbooks(NomBook).VBProject.VBComponents.Remove_
' Application.Workbooks(NomBook).VBProject.VBComponents ("UserFormAmoi")
' Application.Workbooks(NomBook).Save
' On Error GoTo 0
With form
.Properties("Name") = "UserForm6"
End With
'ajoute les ListBox au UserForm
For i = 1 To 3
Set NewListBox = form.Designer.Controls.Add("Forms.listbox.1")
Next i
'************************
With form.codemodule
.insertlines 1, "Sub UserForm_Initialize()"
.insertlines 2, " For i=1 To 3"
.insertlines 3, " ListBox1.AddItem i"
.insertlines 4, " ListBox2.AddItem i"
.insertlines 5, " ListBox3.AddItem i"
.insertlines 6, " Next i"
.insertlines 7, "End Sub"
End With
'*************************
'affiche le UserForm
' Load VBA.UserForms.Add(Form.Name)
VBA.UserForms.Add(form.Name).Show
End Sub
'''''''''''''''''''''''''
----------
Ange Ounis
----------Bonjour,
Je crée un UserForm avec des ListBox de la façon suivante :
Dim Form as Object, Tabl(3) as String, i as Integer, j as Integer
Dim NewListBox as MSForms.ListBox, NomBook as String
NomBook=ThisWorkBook.Name
'renseignement du tableau
For i=1 to 3: Tabl(i)="xxx" & i: Next i
'création d'un UserForm
Set Form=ThisWorkBook.VBProject.VBComponents.Add(3)
'suppression du UserForm précédent
On Error Resume Next
Application.WorkBooks(NomBook).VBProject.VBComponents.Remove_
Application.WorkBooks(NomBook).VBProject.VBComponents("UserFormAmoi")
Application.WorkBooks(NomBook).Save
On Error GoTo 0
With Form
.Properties("Name")="UserFormAmoi"
End With
'ajoute les ListBox au UserForm
For i=1 to 3
Set NewListBox=Form.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
For j=1 to 3
.AdddItem Tabl(j)
Next j
End With
Next i
'affiche le UserForm
Load VBA.UserFormS.Add(Form.Name)
VBA.UserFormS.Add(Form.Name).Show
Le UserForm s'affiche bien, mais avec des ListBox vides.
Avez-vous une idée sur la raison de cette absce d'informations dans les
listBox ?
Merci de votre aide