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.