/ / Excel VBA Userform

Excel VBA Userform

Ajouter les contrôles | Afficher le formulaire utilisateur | Assigner les macros | Tester le formulaire utilisateur

Ce chapitre vous apprend à créer un Excel VBA Userform. Le formulaire utilisateur que nous allons créer se présente comme suit:

Excel VBA Userform

Ajouter les contrôles

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

1. Ouvrez Visual Basic Editor. Si l'explorateur de projet n'est pas visible, cliquez sur Affichage, Explorateur de projets.

2. Cliquez sur Insérer, Userform. Si la boîte à outils n'apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran devrait être configuré comme ci-dessous.

Configuration de l'écran du formulaire utilisateur dans Excel VBA

3. Ajoutez les contrôles énumérés dans le tableau ci-dessous. Une fois que cela est terminé, le résultat doit être cohérent avec l'image du Userform présentée précédemment. Par exemple, créez un contrôle de zone de texte en cliquant sur TextBox dans la Boîte à outils. Ensuite, vous pouvez faire glisser une zone de texte sur le Userform. Lorsque vous arrivez au cadre Voiture, n'oubliez pas de dessiner ce cadre avant de placer les deux boutons d'option.

4 Modifiez les noms et les légendes des contrôles en fonction du tableau ci-dessous. Les noms sont utilisés dans le code Excel VBA. Les légendes sont celles qui apparaissent sur votre écran. Il est recommandé de changer le nom 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, puis cliquez sur chaque contrôle.

Contrôle prénom Légende
Formulaire utilisateur DinnerPlannerUserForm Planificateur de dîner
Zone de texte NameTextBox
Zone de texte PhoneTextBox
Zone de liste CityListBox
Boîte combo DinnerComboBox
Case à cocher DateCheckBox1 13 juin
Case à cocher DateCheckBox2 20 juin
Case à cocher DateCheckBox3 27 juin
Cadre CarFrame Voiture
Bouton d'option CarOptionButton1 Oui
Bouton d'option CarOptionButton2 Non
Zone de texte MoneyTextBox
Bouton de rotation MoneySpinButton
Bouton de commande OKBouton D'accord
Bouton de commande ClearButton Clair
Bouton de commande AnnulerBouton Annuler
7 étiquettes Pas besoin de changer Nom:, numéro de téléphone: etc.

Remarque: une liste déroulante est une liste déroulante à partir de laquelle un utilisateur peut sélectionner un élément ou compléter son propre choix. Un seul des boutons d'option peut être sélectionné.

Afficher le formulaire utilisateur

Pour afficher le formulaire utilisateur, placez un bouton de commande sur votre feuille de calcul et ajoutez la ligne de code suivante:

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

Nous allons maintenant créer le Sub UserForm_Initialize. Lorsque vous utilisez la méthode Show pour Userform, ce sous-programme sera automatiquement exécuté.

1. Ouvrez Visual Basic Editor.

2. Dans l'Explorateur de projet, cliquez avec le bouton droit sur DinnerPlannerUserForm, puis cliquez sur Afficher le code.

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

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, les zones de liste et les listes déroulantes sont remplies, les cases à cocher ne sont pas cochées, etc.

Assigner les macros

Nous avons maintenant créé la première partie du Userform. Bien que cela ait déjà l'air sympa, rien ne se passera quand on cliquera sur les boutons de commande du Userform.

1. Ouvrez Visual Basic Editor.

2. Dans l'Explorateur de projet, double-cliquez sur DinnerPlannerUserForm.

3. Double-cliquez sur le bouton de rotation Money.

4. Ajoutez la ligne de code suivante:

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.

5. Double-cliquez sur le bouton OK.

6. 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: d'abord, nous activons Sheet1. Ensuite, nous déterminons emptyRow. La variable emptyRow est la première ligne vide et augmente chaque fois qu'un enregistrement est ajouté. Enfin, nous transférons les informations de Userform aux colonnes spécifiques de emptyRow.

7. Double-cliquez sur le bouton Effacer.

8. Ajoutez la ligne de code suivante:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Explication: cette ligne de code appelle le sous-formulaire UserForm_Initialize lorsque vous cliquez sur le bouton Effacer.

9. Double-cliquez sur le bouton Annuler.

10. Ajoutez la ligne de code suivante:

Private Sub CancelButton_Click()

Unload Me

End Sub

Explication: cette ligne de code ferme le formulaire utilisateur lorsque vous cliquez sur le bouton Annuler.

Tester le formulaire utilisateur

Quittez Visual Basic Editor, entrez les étiquettes illustrées ci-dessous dans la rangée 1 et testez le Userform.

Résultat:

Tester le formulaire utilisateur

Lisez aussi: