Créer des cases à cocher dans UserForm, Excel VBA
Créer des cases à cocher (checkboxes) dans un UserForm VBA Excel permet à l’utilisateur de faire des sélections multiples de manière interactive. Voici un exemple détaillé avec le code et des explications sur la façon de créer des cases à cocher dans un UserForm en VBA Excel.
Étapes pour créer un UserForm avec des cases à cocher dans Excel VBA
- Ouvrir l’Éditeur VBA : Dans Excel, appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Ajouter un UserForm : Cliquez sur Insertion > UserForm pour ajouter un formulaire.
- Ajouter des Cases à Cocher : Cliquez sur le contrôle « Case à cocher » (Checkbox) dans la boîte à outils du UserForm et placez-le sur le formulaire. Vous pouvez ajouter plusieurs cases à cocher selon vos besoins.
- Écrire le Code VBA : Une fois que vous avez ajouté vos cases à cocher dans le formulaire, vous allez programmer les événements associés, comme la vérification de l’état des cases à cocher, et effectuer des actions en fonction des sélections de l’utilisateur.
Code détaillé pour créer un UserForm avec des cases à cocher
1. Créer un UserForm avec des cases à cocher dynamiques :
Imaginons un scénario où vous avez trois options sous forme de cases à cocher : « Option 1 », « Option 2 », « Option 3 ». Le but est de récupérer quelles options sont sélectionnées et de les afficher dans une cellule Excel.
1.1 Créer les cases à cocher dynamiquement dans le code
Nous allons créer un tableau de cases à cocher et les ajouter automatiquement au formulaire.
Private Sub UserForm_Initialize() Dim i As Integer Dim chkBox As MSForms.CheckBox Dim options() As String options = Array("Option 1", "Option 2", "Option 3") ' Tableau avec les labels des options ' Boucle pour créer les cases à cocher dynamiquement For i = 0 To UBound(options) Set chkBox = Me.Controls.Add("Forms.CheckBox.1") ' Créer une case à cocher chkBox.Caption = options(i) ' Assigner le texte de la case chkBox.Left = 10 ' Position horizontale chkBox.Top = 10 + (i * 25) ' Position verticale (espacement de 25 pixels entre les cases) chkBox.Name = "chkOption" & i ' Nom de chaque case à cocher (chkOption0, chkOption1, etc.) Next i End Sub
Explication du code :
- UserForm_Initialize() : Cette procédure est exécutée lorsqu’on ouvre le formulaire. Elle initialise les cases à cocher.
- Me.Controls.Add(« Forms.CheckBox.1 ») : Cette ligne permet de créer une case à cocher dynamiquement.
- chkBox.Caption = options(i) : Le texte de la case à cocher est défini à partir du tableau options.
- chkBox.Left et chkBox.Top : Ces propriétés définissent la position des cases à cocher sur le formulaire.
- chkBox.Name = « chkOption » & i : Le nom de chaque case à cocher est dynamique et basé sur l’indice i.
1.2 Récupérer les cases à cocher sélectionnées
Lorsque l’utilisateur clique sur le bouton de soumission, nous voulons récupérer l’état des cases à cocher sélectionnées et les afficher dans une cellule Excel.
Voici un exemple de code pour le bouton de validation :
Private Sub btnSubmit_Click() Dim i As Integer Dim selectedOptions As String selectedOptions = "Options sélectionnées : " ' Boucle à travers les cases à cocher For i = 0 To 2 ' 3 options (indice 0, 1, 2) If Me.Controls("chkOption" & i).Value = True Then selectedOptions = selectedOptions & Me.Controls("chkOption" & i).Caption & ", " End If Next i ' Enlever la dernière virgule et espace If Len(selectedOptions) > 0 Then selectedOptions = Left(selectedOptions, Len(selectedOptions) - 2) End If ' Afficher les options sélectionnées dans une cellule Excel Sheets("Feuil1").Range("A1").Value = selectedOptions MsgBox selectedOptions ' Afficher un message avec les options sélectionnées End Sub
Explication du code :
- If Me.Controls(« chkOption » & i).Value = True Then : Cette condition vérifie si la case à cocher est sélectionnée (True signifie cochée, False signifie décochée).
- selectedOptions = selectedOptions & Me.Controls(« chkOption » & i).Caption & « , « : Si la case est cochée, son texte est ajouté à la chaîne selectedOptions.
- Sheets(« Feuil1 »).Range(« A1 »).Value = selectedOptions : La chaîne des options sélectionnées est ensuite affichée dans la cellule A1 de la feuille de calcul.
- MsgBox selectedOptions : Un message pop-up affiche les options sélectionnées.
Ajouter un bouton de fermeture pour fermer le formulaire :
Ajoutez un bouton sur le formulaire pour fermer le UserForm lorsque l’utilisateur a terminé.
Private Sub btnClose_Click() Unload Me ' Ferme le UserForm End Sub
Ajouter un bouton de lancement pour ouvrir le UserForm :
Dans un module standard, vous pouvez ajouter un code pour ouvrir le UserForm. Par exemple, pour ouvrir le formulaire avec un bouton sur la feuille de calcul :
Sub ShowUserForm() UserForm1.Show End Sub
Résumé :
- Le code crée un UserForm avec des cases à cocher dynamiques basées sur un tableau d’options.
- Lorsqu’un utilisateur soumet son choix, le code vérifie quelles cases sont cochées et affiche les options sélectionnées dans une cellule Excel.
- Vous pouvez ajouter un bouton de fermeture pour fermer le formulaire proprement.
Ainsi, vous avez un UserForm interactif avec des cases à cocher, et un système pour récupérer les valeurs sélectionnées dans une feuille Excel avec VBA.