Multipage dynamique, VBA

Fermé
little developer - 12 janv. 2012 à 07:16
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 13 janv. 2012 à 12:23
Bonjour,

Je souhaite développer une petite application sous vba.

Il s'agit de créer dynamiquement un formulaire multipage, dont les pages différentes correspondent à différents éléments. Le nombre de pages du multipage est dynamique.

Chaque page doit par ailleurs se remplir grâce au programme: par exemple, page1 doit se remplir de checkbox correspondant à tous les fichiers du dossier dans lequel est placé le classeur excel.

Créer des checkboxes dynamiquement n'est pas un pb. En revanche, je n'arrive pas à les faire apparaitre sur les pages. si je fais:

UserForm1.Controls.Add("forms.CheckBox.1"), on ne verra pas la checkbox.

J'espère avoir été clair, merci d'avance de vos réponses.

Cordialement,

Little Developer

2 réponses

little developer
12 janv. 2012 à 23:05
up
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
13 janv. 2012 à 12:23
Bonjour,
J'ai créé un UserForm, sur lequel j'ai placé :
- Un multipage de deux pages (1 et 2)
- 2 CommandButton : AjoutCheckPage1 et AjoutCheckPage2

Le code de ces boutons, pour ajouter des checkboxs aux pages 1 et 2 est :
Private Sub AjoutCheckPage1_Click()
Dim Obj As Control
Dim Cptr As Integer, Hauteur As Integer

'détermine le nombre de CheckBox déjà présents dans l'USF pour déterminer le nom
For Each Obj In Me.MultiPage1.Pages(0).Controls
    If TypeOf Obj Is MSForms.CheckBox Then Cptr = Cptr + 1
Next
Cptr = Cptr + 1
Hauteur = Cptr * 30 + 30 '30 = Top de chaque checkBox
If Hauteur >= Me.MultiPage1.Height - 20 Then
    MsgBox "Plus de place"
    Exit Sub
End If
Set Obj = Me.MultiPage1.Pages(0).Controls.Add("forms.Checkbox.1")
    With Obj
        .Name = "monCheckBox" & Cptr
        .Caption = "monCheckBox" & Cptr
        .Left = 10
        .Top = 30 * Cptr
        .Width = 100
        .Height = 20
    End With
End Sub

Private Sub AjoutCheckPage2_Click()
Dim Obj As Control
Dim Cptr As Integer, Hauteur As Integer

'détermine le nombre de CheckBox déjà présents dans l'USF pour déterminer le nom
For Each Obj In Me.MultiPage1.Pages(1).Controls
    If TypeOf Obj Is MSForms.CheckBox Then Cptr = Cptr + 1
Next
Cptr = Cptr + 1
Hauteur = Cptr * 30 + 30 '30 = Top de chaque checkBox
If Hauteur >= Me.MultiPage1.Height - 20 Then
    MsgBox "Plus de place"
    Exit Sub
End If
Set Obj = Me.MultiPage1.Pages(1).Controls.Add("forms.Checkbox.1")
    With Obj
        .Name = "monCheckBox" & Cptr
        .Caption = "monCheckBox" & Cptr
        .Left = 10
        .Top = 30 * Cptr
        .Width = 100
        .Height = 20
    End With
End Sub

Ci-joint une petite démo... Appuies plusieurs fois sur chaque bouton, page2 non sélectionnée etc...
0