Antoine716
XLDnaute Nouveau
Bonjour a tous,
Voila plusieurs heures que je cherche sans succès une réponse a mon problème!
Je travail avec des macro qui initialise est ouvre un UserForm.
Sur la feuille 1, j'ai un bouton "Initi" qui lance la macro.
Dans la macros je créer des bouton dynamiquement suivant les paramètre de la feuille 2.
Ca marche très bien! (En mode non modale)
La ou ça coince c'est quand je veux ajouter une macro a chaque ToggleButton créer.
J'utilise donc : ThisWorkbook.VBProject.VBComponents() pour ajouter des macro dans le userform.
Ca marche également mais a la fin de la macro tout mon UserForm ce ferme!
(Il s'ouvre et ce ferme en une fraction de seconde!)
Je doit mettre mon userForm en mode Modale si je veut que ça reste affiché a l'ecran!
Si quelqu'un peut m'aidez!
merci d'avance,
Cordialement antoine.
Voila plusieurs heures que je cherche sans succès une réponse a mon problème!
Je travail avec des macro qui initialise est ouvre un UserForm.
Sur la feuille 1, j'ai un bouton "Initi" qui lance la macro.
Dans la macros je créer des bouton dynamiquement suivant les paramètre de la feuille 2.
Ca marche très bien! (En mode non modale)
La ou ça coince c'est quand je veux ajouter une macro a chaque ToggleButton créer.
J'utilise donc : ThisWorkbook.VBProject.VBComponents() pour ajouter des macro dans le userform.
Ca marche également mais a la fin de la macro tout mon UserForm ce ferme!
(Il s'ouvre et ce ferme en une fraction de seconde!)
Je doit mettre mon userForm en mode Modale si je veut que ça reste affiché a l'ecran!
Si quelqu'un peut m'aidez!
merci d'avance,
Cordialement antoine.
VB:
Private Sub Delete_Code_ThisModule()
With ActiveWorkbook.VBProject.VBComponents("UserForm_SubFilter").CodeModule
.DeleteLines 1, .CountOfLines
'.CodePane.Window.Close
End With
End Sub
Sub InitializeUserFormSubCat()
Dim Module As Object
Unload UserForm_SubFilter
Delete_Code_ThisModule
Set Module = ThisWorkbook.VBProject.VBComponents("UserForm_SubFilter")
'If Err.Number <> 0 Then: Set Module = ThisWorkbook.VBProject.VBComponents.Add(1)
Dim Bouton As Object
Dim nLabel As Object
LargeurBouton = 70
HauteurBouton = 20
Dim shB As Worksheet
Set shB = ThisWorkbook.Worksheets("Feuil2")
nFilter = 1
nCheckFilter = 1
nToggleButton = 1
iBuff = 0
Do While Not (IsEmpty(shB.Cells(4, nCheckFilter)))
i = 0
If Not (IsEmpty(shB.Cells(6, nCheckFilter))) Then
UserForm_SubFilter.Width = 25 + ((LargeurBouton + 5) * nFilter)
Set nLabel = UserForm_SubFilter.Controls.Add("Forms.Label.1")
With nLabel
.Caption = shB.Cells(4, nCheckFilter)
.Font.Bold = True
.Font.Size = 10
.Height = 15
.Width = LargeurBouton
.Left = 10 + (LargeurBouton + 5) * (nFilter - 1)
.Top = 3
End With
End If
Do While Not (IsEmpty(shB.Cells(i + 6, nCheckFilter)))
nameToggleButton = "ToggleButtonSubFilter" & nToggleButton & "_Click()"
captionToggleButton = shB.Cells(i + 6, nCheckFilter)
Set Bouton = UserForm_SubFilter.Controls.Add("Forms.ToggleButton.1")
With Bouton
.Name = nameToggleButton
.Caption = captionToggleButton
.BackColor = &H808000
.ForeColor = &HFFFFFF
.Font.Bold = True
.Font.Size = 8
.Height = HauteurBouton
.Width = LargeurBouton
.Left = 5 + (LargeurBouton + 5) * (nFilter - 1)
.Top = (HauteurBouton + 2) * (i + 1)
End With
With Module.CodeModule
.InsertLines .CountOfLines + 1, "Private Sub " & nameToggleButton
.InsertLines .CountOfLines + 1, " Test(" & captionToggleButton & ")"
.InsertLines .CountOfLines + 1, "End Sub"
.InsertLines .CountOfLines + 1, ""
End With
i = i + 1
nToggleButton = nToggleButton + 1
Loop
If i > iBuff Then
iBuff = i
End If
UserForm_SubFilter.Height = 50 + ((HauteurBouton + 2) * (iBuff))
nFilter = nFilter + 1
nCheckFilter = nCheckFilter + 1
Loop
UserForm_SubFilter.Show
End Sub
Pièces jointes
Dernière édition: