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 , j'utiliserai aussi une ListBox mais malgré tout, voici un petit exemple de création de boutons d'option. Pour la gestion des événements, il te faut utiliser un module de classe.

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 Sub

Attention, 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

Merci,

Je viens d'essayer mais j'ai une erreur

Je joint mon fichier.

13classeur1.xlsm (22.68 Ko)
Rechercher des sujets similaires à "userform dynamique"