/ / Excel VBA Userform avec plusieurs pages

Excel VBA Userform avec plusieurs pages

Ci-dessous, nous allons examiner un programme dans Excel VBA qui crée un Userform contenant plusieurs pages. Ce formulaire contient également des images.

Le contrôle multipage contient deux pages. À la page 1, l'utilisateur peut renseigner ses informations personnelles. À la page 2, l'utilisateur peut indiquer le tableau qu'il préfère.

Userform Page 1
Userform Page 2

Pour créer ce Userform, exécutez les étapes suivantes.

1. Ouvrez Visual Basic Editor. Si l'explorateur de projet n'est pas visible, cliquez sur Affichage, Explorateur de projets.

2. Cliquez sur Insérer, Userform. Si la boîte à outils n'apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran devrait être configuré comme ci-dessous.

Configuration de l'écran du formulaire utilisateur dans Excel VBA

3 Ajoutez le contrôle Multipage, les étiquettes, les zones de texte (la première en haut, la seconde en dessous de la première), le cadre, les boutons d’option (la première à gauche, la seconde à droite), la zone de liste, le contrôle d’image et le bouton de commande. Une fois que cela est terminé, le résultat doit être cohérent avec la version vide du Userform présentée précédemment. Par exemple, créez un contrôle Multipage en cliquant sur Multipage dans la Boîte à outils. Ensuite, vous pouvez faire glisser un contrôle Multipage sur le Userform. Lorsque vous arrivez au cadre Genre, n'oubliez pas de dessiner ce cadre avant de placer les deux boutons d'option.

4 Vous pouvez modifier les noms et les légendes des contrôles. Les noms sont utilisés dans le code Excel VBA. Les légendes sont celles qui apparaissent sur votre écran. Il est judicieux de changer le nom des contrôles, mais cela n’est pas nécessaire ici car nous n’avons que quelques contrôles dans cet exemple. Pour modifier la légende du formulaire Userform, des onglets multipage, des étiquettes, des cadres, des boutons d'option et du bouton de commande, cliquez sur Afficher, Fenêtre des propriétés et cliquez sur chaque contrôle.

5. Pour afficher le formulaire utilisateur, placez un bouton de commande sur votre feuille de calcul et ajoutez la ligne de code suivante:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Nous allons maintenant créer le Sub UserForm_Initialize. Lorsque vous utilisez la méthode Show pour Userform, ce sous-programme sera automatiquement exécuté.

6. Ouvrez Visual Basic Editor.

7. Dans l'Explorateur de projet, cliquez avec le bouton droit sur UserForm1, puis cliquez sur Afficher le code.

8. Choisissez Userform dans la liste déroulante de gauche. Choisissez Initialiser dans la liste déroulante de droite.

9. Ajoutez les lignes de code suivantes:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Mountains"
    .AddItem "Sunset"
    .AddItem "Beach"
    .AddItem "Winter"
End With

End Sub

Explication: la zone de liste de la page 2 sera remplie.

Nous avons maintenant créé la première partie du Userform. Bien que cela ait déjà l'air sympa, rien ne se passera pour le moment lorsque nous sélectionnons un élément dans la liste ou lorsque nous cliquons sur le bouton OK.

10. Téléchargez les images (à droite de cette page) et ajoutez-les à "C: test"

11. Dans l'Explorateur de projet, double-cliquez sur UserForm1.

12. Double-cliquez sur la liste.

13. Ajoutez les lignes de code suivantes:

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then
    Image1.Picture = LoadPicture("C:testMountains.jpg")
End If

If ListBox1.ListIndex = 1 Then
    Image1.Picture = LoadPicture("C:testSunset.jpg")
End If

If ListBox1.ListIndex = 2 Then
    Image1.Picture = LoadPicture("C:testBeach.jpg")
End If

If ListBox1.ListIndex = 3 Then
    Image1.Picture = LoadPicture("C:testWinter.jpg")
End If

End Sub

Explication: ces lignes de code chargent une image en fonction de l'élément sélectionné dans la liste.

14. Double-cliquez sur le bouton OK.

15. Ajoutez les lignes de code suivantes:

Private Sub CommandButton1_Click()

Dim emptyRow As Long

"Make Sheet1 active
Sheet1.Activate

"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

"Transfer information
Cells(emptyRow, 1).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value

If OptionButton1.Value = True Then
    Cells(emptyRow, 3).Value = "Male"
Else
    Cells(emptyRow, 3).Value = "Female"
End If

Cells(emptyRow, 4).Value = ListBox1.Value

"Close Userform
Unload Me

End Sub

Explication: d'abord, nous activons Sheet1. Ensuite, nous déterminons emptyRow. La variable emptyRow est la première ligne vide et augmente chaque fois qu'un enregistrement est ajouté. Ensuite, nous transférons les informations de Userform aux colonnes spécifiques de emptyRow. Enfin, nous fermons le Userform.

16. Quittez Visual Basic Editor, entrez les étiquettes illustrées ci-dessous dans la rangée 1 et testez Userform.

Résultat:

Tester le formulaire utilisateur

Lisez aussi: