Userform dynamique
Bonsoir à tous,
J'ai une petite question.
Est il possible de créer un userform dynamique dans le sens où je ne sais pas a l'avance combien de bouton Options il va y avoir.
Cela dépendrait du nombre de lignes que j'aurais sur une page.
Et le but est que lorsque je fasse apparaître cet userform j'ai x bouton option que je n'ai de ligne sur ma page.
Je ne sais pas si c'est clair ce que je vous demande...
Merci d'avance .
Bonjour,
un autre possibilité serait d'utiliser un ListBox avec ListStyle = fmListStyleOption
voici un exemple:
Bonjour,
Comme te le conseille judicieusement i20100
Code à mettre dans le module de l'UserForm :
Private Sub UserForm_Initialize()
Dim Opt As MSForms.OptionButton
Dim Haut As Integer
Dim Gauche As Integer
Dim I As Integer
Dim Lig As Long
Const Largeur As Integer = 70
Const Hauteur As Integer = 15
Const Espace As Integer = 6
Haut = 6
Gauche = 6
'en colonne A
With ActiveSheet: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row: End With
For I = 1 To Lig
Set Opt = Controls.Add("Forms.OptionButton.1", "Opt" & I)
With Opt
.Left = Gauche
.Top = Haut
.Width = Largeur
.Height = Hauteur
.Caption = Cells(I, 1).Value
End With
If Gauche > Me.Width - Opt.Width * 2 Then
Gauche = 6: Haut = Haut + Hauteur + Espace
Else
Gauche = Gauche + Largeur + Espace: Haut = Haut
End If
If Haut > Me.Height - Opt.Height * 2 Then
Me.ScrollBars = fmScrollBarsVertical
Me.ScrollHeight = Haut
End If
ReDim Preserve Tbl(1 To I)
Set Tbl(I).GroupeOpt = Opt
Next I
Set Opt = Nothing
End SubAttention, avec les boutons d'option conçus de cette façon, tu ne peut en cocher q'un seul sur toute la collection !
Code à mettre dans le module de classe :
Public WithEvents GroupeOpt As MSForms.OptionButton
Private Sub GroupeOpt_Click()
MsgBox GroupeOpt.Name & vbCrLf & GroupeOpt.Caption
End Sub