Ce chapitre vous apprend comment créer un fichier Excel VBA Userform. Le Userform nous allons créer se présente comme suit:

Excel VBA Userform

Ajouter les contrôles

Pour ajouter les contrôles au Userform, exécutez les étapes suivantes.

  1. 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.

  2. 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.

Userform Screen Setup in Excel VBA

  1. 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.

  2. 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.

  1. Ouvrez le lien: / ABV-create-a-macro #-éditeur Visual Basic [Visual Basic Editor].

  2. Dans l’Explorateur de projets, cliquez droit sur DinnerPlannerUserForm puis cliquez sur Afficher le code.

  3. Choisissez Userform dans la liste déroulante de gauche. Choisissez Initialiser de la droite liste déroulante.

  4. 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.

  1. Ouvrez le lien: / ABV-create-a-macro #-éditeur Visual Basic [Visual Basic Editor].

  2. Dans l’Explorateur de projets, double-cliquez sur DinnerPlannerUserForm.

  3. Double-cliquez sur le bouton de rotation de l’argent.

  4. 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.

  1. Double-cliquez sur le bouton OK.

  2. 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.

  1. Double-cliquez sur le bouton Effacer.

  2. 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.

  1. Double-cliquez sur le bouton Annuler.

  2. 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:

Test the Userform