VBA - Formulaires utilisateur

UNE User Formest une boîte de dialogue personnalisée qui rend la saisie de données utilisateur plus contrôlable et plus facile à utiliser pour l'utilisateur. Dans ce chapitre, vous apprendrez à concevoir un formulaire simple et à ajouter des données dans Excel.

Step 1- Accédez à la fenêtre VBA en appuyant sur Alt + F11 et accédez au menu "Insertion" et sélectionnez "Formulaire utilisateur". Lors de la sélection, le formulaire utilisateur s'affiche comme illustré dans la capture d'écran suivante.

Step 2 - Concevez les formulaires en utilisant les contrôles donnés.

Step 3- Après avoir ajouté chaque contrôle, les contrôles doivent être nommés. La légende correspond à ce qui apparaît sur le formulaire et le nom correspond au nom logique qui apparaîtra lorsque vous écrivez le code VBA pour cet élément.

Step 4 - Voici les noms de chacun des contrôles ajoutés.

Contrôle Nom logique Légende
De frmempform Formulaire d'employé
Boîte d'étiquette d'identification d'employé empid ID d'employé
boîte d'étiquette prénom Prénom Prénom
Nom de la boîte d'étiquette nom de famille Nom de famille
Boîte d'étiquettes dob dob Date de naissance
Boîte d'étiquettes mailid mailid ID e-mail
Boîte d'étiquettes de détenteur de passeport Titulaire du passeport Titulaire du passeport
Zone de texte Emp ID txtempid N'est pas applicable
Zone de texte du prénom txtfirstname N'est pas applicable
Zone de texte Nom txtlastname N'est pas applicable
Zone de texte de l'ID d'e-mail txtemailid N'est pas applicable
Zone de liste déroulante Date cmbdate N'est pas applicable
Zone de liste déroulante Mois cmbmonth N'est pas applicable
Boîte combo Année année N'est pas applicable
Bouton radio Oui radioyes Oui
Pas de bouton radio radiono Non
Bouton de soumission btnsubmit Soumettre
Bouton Annuler btncannuler Annuler

Step 5 - Ajoutez le code de l'événement de chargement du formulaire en effectuant un clic droit sur le formulaire et en sélectionnant «Afficher le code».

Step 6 - Sélectionnez 'Userform' dans la liste déroulante des objets et sélectionnez la méthode 'Initialize' comme indiqué dans la capture d'écran suivante.

Step 7 - Lors du chargement du formulaire, assurez-vous que les zones de texte sont effacées, que les listes déroulantes sont remplies et que les boutons radio sont réinitialisés.

Private Sub UserForm_Initialize()
   'Empty Emp ID Text box and Set the Cursor 
   txtempid.Value = ""
   txtempid.SetFocus
   
   'Empty all other text box fields
   txtfirstname.Value = ""
   txtlastname.Value = ""
   txtemailid.Value = ""
   
   'Clear All Date of Birth Related Fields
   cmbdate.Clear
   cmbmonth.Clear
   cmbyear.Clear
   
   'Fill Date Drop Down box - Takes 1 to 31
   With cmbdate
      .AddItem "1"
      .AddItem "2"
      .AddItem "3"
      .AddItem "4"
      .AddItem "5"
      .AddItem "6"
      .AddItem "7"
      .AddItem "8"
      .AddItem "9"
      .AddItem "10"
      .AddItem "11"
      .AddItem "12"
      .AddItem "13"
      .AddItem "14"
      .AddItem "15"
      .AddItem "16"
      .AddItem "17"
      .AddItem "18"
      .AddItem "19"
      .AddItem "20"
      .AddItem "21"
      .AddItem "22"
      .AddItem "23"
      .AddItem "24"
      .AddItem "25"
      .AddItem "26"
      .AddItem "27"
      .AddItem "28"
      .AddItem "29"
      .AddItem "30"
      .AddItem "31"
   End With
   
   'Fill Month Drop Down box - Takes Jan to Dec
   With cmbmonth
      .AddItem "JAN"
      .AddItem "FEB"
      .AddItem "MAR"
      .AddItem "APR"
      .AddItem "MAY"
      .AddItem "JUN"
      .AddItem "JUL"
      .AddItem "AUG"
      .AddItem "SEP"
      .AddItem "OCT"
      .AddItem "NOV"
      .AddItem "DEC"
   End With
   
   'Fill Year Drop Down box - Takes 1980 to 2014
   With cmbyear
      .AddItem "1980"
      .AddItem "1981"
      .AddItem "1982"
      .AddItem "1983"
      .AddItem "1984"
      .AddItem "1985"
      .AddItem "1986"
      .AddItem "1987"
      .AddItem "1988"
      .AddItem "1989"
      .AddItem "1990"
      .AddItem "1991"
      .AddItem "1992"
      .AddItem "1993"
      .AddItem "1994"
      .AddItem "1995"
      .AddItem "1996"
      .AddItem "1997"
      .AddItem "1998"
      .AddItem "1999"
      .AddItem "2000"
      .AddItem "2001"
      .AddItem "2002"
      .AddItem "2003"
      .AddItem "2004"
      .AddItem "2005"
      .AddItem "2006"
      .AddItem "2007"
      .AddItem "2008"
      .AddItem "2009"
      .AddItem "2010"
      .AddItem "2011"
      .AddItem "2012"
      .AddItem "2013"
      .AddItem "2014"
   End With
   
   'Reset Radio Button. Set it to False when form loads.
   radioyes.Value = False
   radiono.Value = False

End Sub

Step 8- Ajoutez maintenant le code au bouton Soumettre. En cliquant sur le bouton Soumettre, l'utilisateur doit être en mesure d'ajouter les valeurs dans la feuille de calcul.

Private Sub btnsubmit_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 = txtempid.Value
   Cells(emptyRow, 2).Value = txtfirstname.Value
   Cells(emptyRow, 3).Value = txtlastname.Value
   Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
   Cells(emptyRow, 5).Value = txtemailid.Value
  
   If radioyes.Value = True Then
      Cells(emptyRow, 6).Value = "Yes"
   Else
      Cells(emptyRow, 6).Value = "No"
   End If
End Sub

Step 9 - Ajoutez une méthode pour fermer le formulaire lorsque l'utilisateur clique sur le bouton Annuler.

Private Sub btncancel_Click()
   Unload Me
End Sub

Step 10- Exécutez le formulaire en cliquant sur le bouton "Exécuter". Entrez les valeurs dans le formulaire et cliquez sur le bouton «Soumettre». Automatiquement, les valeurs seront insérées dans la feuille de calcul, comme illustré dans la capture d'écran suivante.