Créer un Contrôle de Tabulation (Tab Control) dans un UserForm, Excel VBA

Créer un Contrôle de Tabulation (Tab Control) dans un UserForm, Excel VBA
Dans ce guide, nous allons expliquer comment créer un Contrôle de Tabulation (ou MultiPage) dans un UserForm en VBA dans Excel. Le processus se déroule en plusieurs étapes :
Étape 1 : Insérer un UserForm
1. Ouvrez Excel et appuyez sur ALT + F11 pour ouvrir l’Éditeur VBA.
2. Dans l’éditeur VBA, allez dans Insertion > UserForm. Un nouveau UserForm vide apparaîtra.
3. Renommez le UserForm pour plus de clarté. Dans la fenêtre des propriétés, changez la propriété Name du UserForm en ufTabExample.
Étape 2 : Ajouter un Contrôle de Tabulation
1. Dans la boîte à outils (Toolbox), recherchez le contrôle « MultiPage » (qui sert de Contrôle de Tabulation).
2. Si la boîte à outils n’est pas visible, appuyez sur CTRL + T ou allez dans Affichage > Boîte à outils.
3. Cliquez sur le contrôle MultiPage (qui ressemble à plusieurs onglets) et dessinez-le sur le UserForm.
4. Renommez le contrôle MultiPage pour plus de clarté :

  • Sélectionnez le contrôle MultiPage.
  • Dans la fenêtre des propriétés, changez la propriété Name en mpTabs.

Étape 3 : Ajouter des Onglets au Contrôle de Tabulation
Par défaut, le contrôle MultiPage contient deux pages (onglets). Vous pouvez ajouter plus d’onglets de manière manuelle ou dynamique.
Ajouter des Onglets Manuellement :
1. Faites un clic droit sur le contrôle MultiPage.
2. Sélectionnez « Nouvelle page » pour ajouter un nouvel onglet.
3. Renommez chaque onglet en modifiant la propriété Caption.
Ajouter des Onglets Dynamiquement avec VBA :
Si vous souhaitez créer des onglets de manière dynamique, vous pouvez utiliser le code VBA suivant :

Private Sub UserForm_Initialize()
    Dim i As Integer
    Dim tabNames As Variant
    tabNames = Array("Général", "Paramètres", "Avancé")
    ' Supprimer les onglets par défaut avant d'ajouter les nouveaux
    Do While mpTabs.Pages.Count > 0
        mpTabs.Pages.Remove 0
    Loop
    ' Ajouter des onglets dynamiquement
    For i = LBound(tabNames) To UBound(tabNames)
        mpTabs.Pages.Add
        mpTabs.Pages(i).Caption = tabNames(i)
    Next i
End Sub

🔹 Ce code s’exécute au chargement du UserForm, en supprimant les onglets existants et en ajoutant trois nouveaux : Général, Paramètres, et Avancé.
Étape 4 : Ajouter des Contrôles à Chaque Onglet
Vous pouvez ajouter des contrôles (étiquettes, zones de texte, boutons, etc.) à chaque onglet, soit manuellement, soit par VBA.
Ajouter des Contrôles Manuellement :
1. Cliquez sur le contrôle MultiPage.
2. Sélectionnez un onglet (Page1, Page2, etc.).
3. Faites glisser et déposez des contrôles depuis la boîte à outils sur chaque onglet.
Ajouter des Contrôles avec VBA :
Vous pouvez également ajouter des contrôles de manière programmatique :

Private Sub AddControlsToTabs()
    Dim txtBox As MSForms.TextBox
    Dim lbl As MSForms.Label
    Dim cmdBtn As MSForms.CommandButton
    ' Ajouter une étiquette au premier onglet (Général)
    Set lbl = mpTabs.Pages(0).Controls.Add("Forms.Label.1", "lblGeneral", True)
    lbl.Caption = "Entrez votre nom :"
    lbl.Left = 10
    lbl.Top = 10
    ' Ajouter une zone de texte au premier onglet (Général)
    Set txtBox = mpTabs.Pages(0).Controls.Add("Forms.TextBox.1", "txtName", True)
    txtBox.Left = 100
    txtBox.Top = 10
    txtBox.Width = 150
    ' Ajouter un bouton au deuxième onglet (Paramètres)
    Set cmdBtn = mpTabs.Pages(1).Controls.Add("Forms.CommandButton.1", "btnSave", True)
    cmdBtn.Caption = "Enregistrer les Paramètres"
    cmdBtn.Left = 10
    cmdBtn.Top = 10
End Sub

🔹 Ce code ajoute :

  • Une étiquette et une zone de texte au premier onglet (Général).
  • Un bouton au deuxième onglet (Paramètres).

Étape 5 : Écrire du Code VBA pour Gérer les Actions des Utilisateurs (Optionnel)
Vous pouvez vouloir gérer des interactions telles que :

  • Le changement d’onglet.
  • La récupération des valeurs saisies.
  • L’exécution d’actions lors du clic sur un bouton.

Exemple : Gérer le Changement d’Onglet
Vous pouvez détecter quand un utilisateur change d’onglet :

Private Sub mpTabs_Change()
    MsgBox "Vous avez changé pour l'onglet : " & mpTabs.Pages(mpTabs.Value).Caption
End Sub

Exemple : Gérer un Clic sur le Bouton dans un Onglet
Vous pouvez définir un événement lorsque le bouton Enregistrer les Paramètres est cliqué :

Private Sub btnSave_Click()
    MsgBox "Paramètres Enregistrés !", vbInformation, "Succès"
End Sub

Code VBA Final (Version Complète)
Voici une version complète du code, combinant toutes les étapes :

Private Sub UserForm_Initialize()
    Dim i As Integer
    Dim tabNames As Variant
    tabNames = Array("Général", "Paramètres", "Avancé")
    ' Supprimer les onglets par défaut avant d'ajouter les nouveaux
    Do While mpTabs.Pages.Count > 0
        mpTabs.Pages.Remove 0
    Loop
    ' Ajouter les nouveaux onglets dynamiquement
    For i = LBound(tabNames) To UBound(tabNames)
        mpTabs.Pages.Add
        mpTabs.Pages(i).Caption = tabNames(i)
    Next i
    ' Appeler la fonction pour ajouter des contrôles
    AddControlsToTabs
End Sub
Private Sub AddControlsToTabs()
    Dim txtBox As MSForms.TextBox
    Dim lbl As MSForms.Label
    Dim cmdBtn As MSForms.CommandButton
    ' Ajouter une étiquette au premier onglet
    Set lbl = mpTabs.Pages(0).Controls.Add("Forms.Label.1", "lblGeneral", True)
    lbl.Caption = "Entrez votre nom :"
    lbl.Left = 10
    lbl.Top = 10
    ' Ajouter une zone de texte au premier onglet
    Set txtBox = mpTabs.Pages(0).Controls.Add("Forms.TextBox.1", "txtName", True)
    txtBox.Left = 100
    txtBox.Top = 10
    txtBox.Width = 150
    ' Ajouter un bouton au deuxième onglet
    Set cmdBtn = mpTabs.Pages(1).Controls.Add("Forms.CommandButton.1", "btnSave", True)
    cmdBtn.Caption = "Enregistrer les Paramètres"
    cmdBtn.Left = 10
    cmdBtn.Top = 10
End Sub
Private Sub mpTabs_Change()
    MsgBox "Vous avez changé pour l'onglet : " & mpTabs.Pages(mpTabs.Value).Caption
End Sub
Private Sub btnSave_Click()
    MsgBox "Paramètres Enregistrés !", vbInformation, "Succès"
End Sub

Résultat Final
Lorsque vous exécutez ce UserForm :

  • Trois onglets seront affichés : Général, Paramètres, Avancé.
  • L’onglet Général contient une étiquette et une zone de texte pour saisir des informations.
  • L’onglet Paramètres contient un bouton pour enregistrer les paramètres.
  • Un message apparaît lorsque vous changez d’onglet.
  • Cliquer sur le bouton Enregistrer les Paramètres déclenche un message de confirmation.

Conclusion
Ce guide vous a permis de créer un Contrôle de Tabulation (MultiPage) dans un UserForm Excel VBA. Nous avons couvert :

L’ajout du contrôle MultiPage.
La création dynamique des onglets.
L’ajout de contrôles spécifiques à chaque onglet.
L’écriture de code VBA pour gérer les interactions des utilisateurs.

Cette approche permet de créer un UserForm dynamique et interactif dans Excel VBA.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x