Créer des cases à cocher dans UserForm, Excel VBA

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 

  1. Ouvrir l’Éditeur VBA : Dans Excel, appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
  2. Ajouter un UserForm : Cliquez sur Insertion > UserForm pour ajouter un formulaire. 
  3. 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. 
  4. É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. 

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