Visual Basic est un excellent langage pour automatiser les tâches répétitives dans Excel. Imaginez que vous poussiez votre automatisation d'un cran en créant des formulaires utilisateur hautement fonctionnels qui semblent également bien rangés pour les utilisateurs finaux.

Les formulaires utilisateur dans VBA vous présentent une toile vierge; vous pouvez concevoir et organiser les formulaires en fonction de vos besoins à tout moment.

Dans ce guide, vous apprendrez à créer un formulaire de saisie de données basé sur l'élève qui capture les informations pertinentes dans des feuilles Excel liées.

Créer un formulaire utilisateur avec Excel VBA

Ouvrez un nouveau classeur Excel et effectuez quelques étapes préliminaires avant de commencer à créer votre formulaire de saisie de données.

Enregistrez votre classeur avec le nom souhaité; n'oubliez pas de changer le type de fichier en Classeur Excel prenant en charge les macros.

En rapport:Sites Web et blogs pour apprendre des trucs et astuces Excel

Ajoutez deux feuilles à ce classeur, avec les noms suivants :

  1. Feuille1: Maison
  2. Feuille2:Base de données des étudiants

N'hésitez pas à modifier ces noms selon vos besoins.

Dans le Maison feuille, ajoutez un bouton pour contrôler la macro du formulaire utilisateur. Allez à la Développeur onglet et cliquez sur le Bouton option de la Insérer la liste déroulante. Placez le bouton n'importe où sur la feuille.

Une fois que vous avez placé le bouton, renommez-le. Faites un clic droit dessus, puis cliquez sur Nouvelle pour assigner une nouvelle macro pour afficher le formulaire.

Saisissez le code suivant dans la fenêtre de l'éditeur :

Sous-bouton1_Clic()
UserForm. Montrer
Sous-titre de fin

Une fois la Maison et Base de données des étudiants les feuilles sont prêtes, il est temps de concevoir le formulaire utilisateur. Naviguez vers le Développeur onglet, et cliquez sur Visual Basic pour ouvrir l'éditeur. Alternativement, vous pouvez appuyer sur ALT+F11 pour ouvrir la fenêtre de l'éditeur.

Clique sur le Insérer onglet et sélectionnez UserForm.

Un formulaire utilisateur vierge est prêt à l'emploi; une boîte à outils d'accompagnement s'ouvre avec le formulaire, qui contient tous les outils essentiels pour concevoir la mise en page.

Dans la boîte à outils, sélectionnez le Cadre option. Faites-le glisser vers le formulaire utilisateur et redimensionnez-le.

Dans le (Nom) option, vous pouvez changer le nom du cadre. Pour afficher le nom sur le front-end, vous pouvez modifier le nom dans le Légende colonne.

Ensuite, sélectionnez le Étiqueter option de la boîte à outils et insérez deux étiquettes dans ce cadre. Renommez le premier en Numéro d'application et la seconde comme Carte d'étudiant.

La même logique de renommage s'applique; changer les noms via le Légende option au sein de la Propriétés la fenêtre. Assurez-vous de sélectionner l'étiquette correspondante avant de modifier son nom.

Ensuite, insérez deux zones de texte à côté des zones d'étiquette. Ceux-ci seront utilisés pour capturer les entrées de l'utilisateur. Modifiez les noms de deux zones de texte via le (Nom) colonne dans le Propriétés la fenêtre. Les noms sont les suivants :

  • Zone de texte 1 : txtApplicationNo
  • Zone de texte 2 : txtStudentID

Conception du cadre des détails de l'étudiant

Insérez un cadre vertical et ajoutez 10 étiquettes et 10 zones de texte. Renommez chacun d'eux de la manière suivante :

  • Libellé3: Nom
  • Libellé4 : Âge
  • Libellé5 : Adresse
  • Libellé6 : Téléphoner
  • Libellé7 : Ville
  • Libellé8 : De campagne
  • Libellé9 : Date de naissance
  • Libellé10 : Code postal
  • Libellé11 : Nationalité
  • Libellé12 : Le sexe

Insérez les zones de texte correspondantes à côté de ces étiquettes; insérer deux (ou plus) bouton d'option boîtes de la boîte à outils du formulaire utilisateur à côté de le sexe étiqueter. Renommez-les Homme et Femme (avec Custom), respectivement.

Conception du cadre des détails du cours

Ajoutez un autre cadre vertical et insérez six étiquettes et six zones de texte correspondant à chaque étiquette. Renommez les libellés comme suit :

  • Libellé13: Nom du cours
  • Étiquette14: Identifiant du cours
  • Étiquette15 : Date de début d'inscription
  • Étiquette16 : Date de fin d'inscription
  • Étiquette17 : Durée du cours
  • Étiquette18 : département

En rapport: 4 erreurs à éviter lors de la programmation de macros Excel avec VBA

Conception du cadre des détails de paiement

Insérez un nouveau cadre; ajoutez un nouveau libellé et renommez-le "Souhaitez-vous mettre à jour les détails de paiement ?" Insérez deux boutons d'option; les renommer Oui et Non.

De même, ajoutez un nouveau cadre contenant deux étiquettes supplémentaires et deux zones de liste déroulante. Renommez les libellés comme suit :

  • Étiquette19 : Paiement reçu
  • Étiquette20: Moyen de paiement

Conception du volet de navigation

Dans le cadre final, ajoutez trois boutons de la boîte à outils, qui contiendront le code pour l'exécution des formulaires.

Renommez les boutons de la manière suivante :

  • Bouton1: Enregistrer les détails
  • Bouton2: Forme claire
  • Bouton3 : Sortir

Écriture du code de formulaire automatisé: bouton Enregistrer les détails

Double-cliquez sur le Enregistrer les détails bouton. Dans le module suivant, insérez le code suivant :

Sous-commande privée CommandButton2_Click()

'déclarer les variables utilisées dans les codes
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Long

'Ajouter des validations pour vérifier si des valeurs de caractères sont saisies dans les champs numériques.
Si VBA.IsNumeric (txtApplicationNo. Value) = False Alors
MsgBox "Seules les valeurs numériques sont acceptées dans le numéro d'application", vbCritical
Quitter le sous-marin
Fin si

Si VBA.IsNumeric (txtStudentID.Value) = False Alors
MsgBox "Seules les valeurs numériques sont acceptées dans l'ID étudiant", vbCritical
Quitter le sous-marin
Fin si

Si VBA.IsNumeric (txtAge. Valeur) = Faux Alors
MsgBox "Seules les valeurs numériques sont acceptées dans Age", vbCritical
Quitter le sous-marin
Fin si

Si VBA.IsNumeric (txtPhone. Valeur) = Faux Alors
MsgBox "Seules les valeurs numériques sont acceptées dans le numéro de téléphone", vbCritical
Quitter le sous-marin
Fin si

Si VBA.IsNumeric (Me.txtCourseID.Value) = False Alors
MsgBox "Seules les valeurs numériques sont acceptées dans Course ID", vbCritical
Quitter le sous-marin
Fin si

'lier les champs de la zone de texte aux feuilles sous-jacentes pour créer une base de données évolutive
Définissez sht = ThisWorkbook. Feuilles ("Base de données des étudiants")

'calculer la dernière ligne remplie dans les deux feuilles

lastrow = sht. Range("a" & Lignes. Compter).Fin (xlHaut).Ligne + 1

'coller les valeurs de chaque zone de texte dans leurs cellules de feuille respectives

Avec merde
.Range("a" & lastrow).Value = txtApplicationNo. Évaluer
.Range("b" & lastrow).Value = txtStudentID.Value
.Range("c" & lastrow).Value = txtName. Évaluer
.Range("d" & lastrow).Value = txtAge. Évaluer
.Range("e" & lastrow).Value = txtDOB.Value
.Range("g" & lastrow).Value = txtAddress. Évaluer
.Range("h" & lastrow).Value = txtPhone. Évaluer
.Range("i" & lastrow).Value = txtCity. Évaluer
.Range("j" & lastrow).Value = txtCountry. Évaluer
.Range("k" & lastrow).Value = txtZip. Évaluer
.Range("l" & lastrow).Value = txtNationalité. Évaluer
.Range("m" & lastrow).Value = txtCourse. Évaluer
.Range("n" & lastrow).Value = txtCourseID.Value
.Range("o" & lastrow).Value = txtenrollmentstart. Évaluer
.Range("p" & lastrow).Value = txtenrollmentend. Évaluer
.Range("q" & lastrow).Value = txtcourseduration. Évaluer
.Range("r" & lastrow).Value = txtDept. Évaluer

Terminer par
merde. Activer

'déterminer le sexe selon l'entrée de l'utilisateur
Si optMale. Valeur = Vrai Alors sht. Range("g" & lastrow).Value = "Homme"
Si optFemale. Valeur = Vrai Alors sht. Range("g" & lastrow).Value = "Femme"
'Affiche une boîte de message, au cas où l'utilisateur sélectionne le bouton radio Oui

Si optOui. Valeur = Vrai Alors
MsgBox "Veuillez sélectionner les détails de paiement ci-dessous"
Autre:
Quitter le sous-marin

Fin si

Sous-titre de fin

Si vous n'êtes pas sûr de la signification des parties ou de l'un des codes, ne vous inquiétez pas. Nous l'expliquerons en détail dans la section suivante.

Code de formulaire automatisé expliqué

Les zones de texte contiendront un mélange de texte et de valeurs numériques, il est donc essentiel de restreindre la saisie de l'utilisateur. le Numéro d'application, Carte d'étudiant, Âge, Téléphoner, Identifiant du cours, et Durée du cours ne doit contenir que des chiffres, tandis que le reste contiendra du texte.

À l'aide d'un SI , le code déclenche des fenêtres contextuelles d'erreur si l'utilisateur entre un caractère ou une valeur de texte dans l'un des champs numériques.

Étant donné que les validations d'erreur sont en place, vous devez lier les zones de texte aux cellules de la feuille.

le dernière rangée les variables calculeront la dernière ligne remplie et y stockeront les valeurs pour une utilisation dynamique.

Enfin, les valeurs sont collées depuis les zones de texte dans la feuille Excel liée.

Effacer les codes du formulaire et du bouton de sortie

Dans le dégager, vous devez écrire le code pour effacer les valeurs existantes du formulaire utilisateur. Cela peut être fait de la manière suivante :

Avec moi
.txtApplicationNo. Valeur = ""
.txtStudentID.Value = ""
..txtNom. Valeur = ""
.txtÂge. Valeur = ""
.txtAdresse. Valeur = ""
.txtTéléphone. Valeur = ""
.txtVille. Valeur = ""
.txtPays. Valeur = ""
.txtDOB.Valeur = ""
.txtZip. Valeur = ""
.txtNationalité. Valeur = ""
.txtCours. Valeur = ""
.txtCourseID.Value = ""
.txtenrollmentstart. Valeur = ""
.txtenrollmentend. Valeur = ""
.txtcourseduration. Valeur = ""
.txtDept. Valeur = ""
.cmbPaymentMode. Valeur = ""
.cmbPaiement. Valeur = ""
.optFemme. Valeur = Faux
.optMale. Valeur = Faux
.optOui. Valeur = Faux
.optNo. Valeur = Faux

Terminer par

Dans le sortir, entrez le code suivant pour fermer le formulaire utilisateur.

Sous-commande privée CommandButton5_Click()
Décharge moi
Sous-titre de fin

Dans une dernière étape, vous devez saisir quelques derniers morceaux de code pour créer les valeurs déroulantes des zones de liste déroulante (dans les cadres de paiement).

Sous UserForm_Activate privé ()

Avec cmbPaiement
.Dégager
.Ajouter un item ""
.AddItem "Oui"
.AddItem "Non"
Terminer par
Avec cmbPaymentMode

.Dégager
.Ajouter un item ""
.AddItem "Cash"
.AddItem "Carte"
.AddItem "Vérifier"
Terminer par
Sous-titre de fin

L'automatisation VBA facilite le travail

VBA est un langage à multiples facettes qui sert à plusieurs fins. Les formulaires utilisateur ne sont qu'un aspect de VBA - il existe de nombreuses autres utilisations telles que la consolidation de classeurs et de feuilles de calcul, la fusion de plusieurs feuilles Excel et d'autres utilisations pratiques de l'automatisation.

Quel que soit l'objectif d'automatisation, VBA est à la hauteur de la tâche. Si vous continuez à apprendre et à vous entraîner, il n'y a aucun aspect de votre flux de travail que vous ne pouvez pas améliorer.

Comment fusionner plusieurs feuilles Excel à l'aide d'une macro VBA

Fusionner des données de plusieurs feuilles Excel dans le même classeur est un véritable casse-tête... jusqu'à ce que vous utilisiez des macros VBA.

Lire la suite

PartagerTweeterE-mail
Rubriques connexes
  • Programmation
  • Productivité
  • Programmation Visual Basic
  • Microsoft Excel
A propos de l'auteur
Gaurav Sial (50 articles publiés)

Gaurav Siyal a deux ans d'expérience en écriture, écrivant pour une série d'entreprises de marketing numérique et de documents sur le cycle de vie des logiciels.

Plus de Gaurav Siyal

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner