Excel VBA Userform
Ce chapitre vous apprend comment créer un fichier Excel VBA Userform. Le Userform nous allons créer se présente comme suit:
Ajouter les contrôles
Pour ajouter les contrôles au Userform, exécutez les étapes suivantes.
-
Ouvrez le
lien: / ABV-create-a-macro #-éditeur Visual Basic [Visual Basic Editor]
. Si l’Explorateur de projets n’est pas visible, cliquez sur Afficher, Project Explorer. -
Cliquez sur Insérer, Userform. Si la boîte à outils n’apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran doit être configuré comme ci-dessous.
-
Ajoutez les contrôles indiqués dans le tableau ci-dessous. Une fois cet exercice terminé, le résultat devrait être compatible avec l’image du Userform indiqué précédemment. Par exemple, créez un contrôle de zone de texte en cliquant sur TextBox de la boîte à outils. Ensuite, vous pouvez faire glisser une zone de texte sur la Userform. Lorsque vous arrivez sur le cadre de voiture, souvenez-vous de dessiner ce cadre avant de placer les deux boutons d’option en elle.
-
Modifiez les noms et les légendes des contrôles selon le tableau ci-dessous. Les noms sont utilisés dans le code VBA Excel. Les légendes sont celles qui apparaissent sur votre écran. Il est bon de changer les noms des contrôles. Cela rendra votre code plus facile à lire. Pour modifier les noms et les légendes des contrôles, cliquez sur Affichage, fenêtre Propriétés et cliquez sur chaque contrôle.
Control |
Name |
Caption |
Userform |
DinnerPlannerUserForm |
Dinner Planner |
Text Box |
NameTextBox |
|
Text Box |
PhoneTextBox |
|
List Box |
CityListBox |
|
Combo Box |
DinnerComboBox |
|
Check Box |
DateCheckBox1 |
June 13th |
Check Box |
DateCheckBox2 |
June 20th |
Check Box |
DateCheckBox3 |
June 27th |
Frame |
CarFrame |
Car |
Option Button |
CarOptionButton1 |
Yes |
Option Button |
CarOptionButton2 |
No |
Text Box |
MoneyTextBox |
|
Spin Button |
MoneySpinButton |
|
Command Button |
OKButton |
OK |
Command Button |
ClearButton |
Clear |
Command Button |
CancelButton |
Cancel |
7 Labels |
No need to change |
Name:, Phone Number:, etc. |
Remarque: une zone de liste déroulante est une liste déroulante où un utilisateur peut sélectionner un élément ou remplir sa / son choix. Un seul des boutons d’option peut être sélectionnée.
Voir la Userform
Pour afficher la Userform, placez un lien: / ABV-create-a-macro-commande bouton # [bouton de commande]
sur votre feuille de calcul et ajoutez la ligne de code suivant:
Private Sub CommandButton1_Click() DinnerPlannerUserForm.Show End Sub
Nous allons maintenant créer la sous UserForm_Initialize. Lorsque vous utilisez la méthode Show pour la Userform, ce sous sera exécuté automatiquement.
-
Ouvrez le
lien: / ABV-create-a-macro #-éditeur Visual Basic [Visual Basic Editor]
. -
Dans l’Explorateur de projets, cliquez droit sur DinnerPlannerUserForm puis cliquez sur Afficher le code.
-
Choisissez Userform dans la liste déroulante de gauche. Choisissez Initialiser de la droite liste déroulante.
-
Ajoutez les lignes de code suivantes:
Private Sub UserForm_Initialize() 'Empty NameTextBox NameTextBox.Value = "" 'Empty PhoneTextBox PhoneTextBox.Value = "" 'Empty CityListBox CityListBox.Clear 'Fill CityListBox With CityListBox .AddItem "San Francisco" .AddItem "Oakland" .AddItem "Richmond" End With 'Empty DinnerComboBox DinnerComboBox.Clear 'Fill DinnerComboBox With DinnerComboBox .AddItem "Italian" .AddItem "Chinese" .AddItem "Frites and Meat" End With 'Uncheck DataCheckBoxes DateCheckBox1.Value = False DateCheckBox2.Value = False DateCheckBox3.Value = False 'Set no car as default CarOptionButton2.Value = True 'Empty MoneyTextBox MoneyTextBox.Value = "" 'Set Focus on NameTextBox NameTextBox.SetFocus End Sub
Explication: les zones de texte sont vidées, zones de liste et zones de liste sont remplies, les cases à cocher ne sont pas cochées, etc.
Assigner des macros
Nous avons créé la première partie de la Userform. Bien qu’il semble déjà soignée, rien ne se passera encore lorsque l’on clique sur les boutons de commande sur le Userform.
-
Ouvrez le
lien: / ABV-create-a-macro #-éditeur Visual Basic [Visual Basic Editor]
. -
Dans l’Explorateur de projets, double-cliquez sur DinnerPlannerUserForm.
-
Double-cliquez sur le bouton de rotation de l’argent.
-
Ajoutez la ligne de code suivant:
Private Sub MoneySpinButton_Change() MoneyTextBox.Text = MoneySpinButton.Value End Sub
Explication: cette ligne de code met à jour la zone de texte lorsque vous utilisez le bouton de rotation.
-
Double-cliquez sur le bouton OK.
-
Ajoutez les lignes de code suivantes:
Private Sub OKButton_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 = NameTextBox.Value Cells(emptyRow, 2).Value = PhoneTextBox.Value Cells(emptyRow, 3).Value = CityListBox.Value Cells(emptyRow, 4).Value = DinnerComboBox.Value If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption If CarOptionButton1.Value = True Then Cells(emptyRow, 6).Value = "Yes" Else Cells(emptyRow, 6).Value = "No" End If Cells(emptyRow, 7).Value = MoneyTextBox.Value End Sub
Explication: Tout d’abord, nous activons Sheet1. Ensuite, nous déterminons emptyRow. La emptyRow variable est la première ligne vide et augmente chaque fois qu’un enregistrement est ajouté. Enfin, nous transférons les informations du Userform aux colonnes spécifiques de emptyRow.
-
Double-cliquez sur le bouton Effacer.
-
Ajoutez la ligne de code suivant:
Private Sub ClearButton_Click() Call UserForm_Initialize End Sub
Explication: cette ligne de code appelle la sous UserForm_Initialize lorsque vous cliquez sur le bouton Effacer.
-
Double-cliquez sur le bouton Annuler.
-
Ajouter la ligne de code suivant:
Private Sub CancelButton_Click() Unload Me End Sub
Explication: cette ligne de code ferme la Userform lorsque vous cliquez sur le bouton Annuler.
Test de la Userform
Quittez l’éditeur Visual Basic, entrez les étiquettes ci-dessous dans la ligne 1 et tester le Userform.
Résultat: