Macros Excel - UserForms

Parfois, vous devrez peut-être collecter des informations à plusieurs reprises auprès d'autres personnes. Excel VBA vous offre un moyen simple de gérer cette tâche.UserForm. Comme tout autre formulaire que vous remplissez, UserForm simplifie la compréhension des informations à fournir. UserForm est convivial dans la mesure où les commandes fournies sont explicites, accompagnées d'instructions supplémentaires si nécessaire.

Le principal avantage d'UserForm est que vous pouvez économiser du temps que vous passez sur quoi et comment les informations doivent être remplies.

Créer un UserForm

Pour créer un UserForm, procédez comme suit -

  • Cliquez sur l'onglet DÉVELOPPEUR sur le ruban.
  • Cliquez sur Visual Basic. Une fenêtre Visual Basic pour le classeur s'ouvre.
  • Cliquez sur Insérer,
  • Sélectionnez UserForm dans la liste déroulante.

L'UserForm apparaît sur le côté droit de la fenêtre.

Comprendre l'UserForm

Agrandissez la fenêtre UserForm.xlsx - UserForm1.

Vous êtes maintenant en mode conception. Vous pouvez insérer des contrôles sur l'UserForm et écrire du code pour les actions respectives. Les contrôles sont disponibles dans la ToolBox. Les propriétés de UserForm se trouvent dans la fenêtre Propriétés. UserForm1 (légende du UserForm) est indiqué sous Formulaires dans l'Explorateur de projets.

  • Remplacez la légende de l'UserForm par Project Report - Daily dans la fenêtre des propriétés.
  • Modifiez le nom de l'UserForm en ProjectReport.

Les modifications sont reflétées dans le UserForm, les propriétés et l'explorateur de projet.

Contrôles dans la boîte à outils

Un UserForm aura différents composants. Au fur et à mesure que vous cliquez sur l'un des composants, soit vous recevrez des instructions sur les informations à fournir et la manière dont elles doivent être fournies, soit des options (choix) à choisir. Tous ces éléments sont fournis au moyen de contrôles ActiveX dans la boîte à outils de l'UserForm.

Excel fournit deux types de contrôles: les contrôles de formulaire et les contrôles ActiveX. Vous devez comprendre la différence entre ces deux types de contrôles.

Contrôles de formulaire

Les contrôles de formulaire sont les contrôles d'origine Excel compatibles avec les versions antérieures d'Excel, à partir d'Excel version 5.0. Les contrôles de formulaire sont également conçus pour être utilisés sur des feuilles de macro XLM.

Vous pouvez exécuter des macros à l'aide de contrôles de formulaire. Vous pouvez affecter une macro existante à un contrôle ou écrire ou enregistrer une nouvelle macro. Lorsque l'utilisateur clique sur le contrôle, la macro. Vous avez déjà appris comment insérer un bouton de commande à partir de contrôles de formulaire dans la feuille de calcul pour exécuter une macro. Toutefois, ces contrôles ne peuvent pas être ajoutés à un UserForm.

Contrôles ActiveX

Les contrôles ActiveX peuvent être utilisés sur les UserForms VBA. Les contrôles ActiveX ont des propriétés étendues que vous pouvez utiliser pour personnaliser leur apparence, leur comportement, leurs polices et d'autres caractéristiques.

Vous disposez des contrôles ActiveX suivants dans la boîte à outils UserForm -

  • Pointer
  • Label
  • TextBox
  • ComboBox
  • ListBox
  • CheckBox
  • OptionButton
  • Frame
  • ToggleButton
  • CommandButton
  • TabStrip
  • MultiPage
  • ScrollBar
  • SpinButton
  • Image

En plus de ces contrôles, Visual Basic vous fournit la fonction MsgBox qui peut être utilisée pour afficher des messages et / ou inviter l'utilisateur à effectuer une action.

Dans les prochaines sections, vous comprendrez ces contrôles et MsgBox. Ensuite, vous serez en mesure de choisir lesquels de ces contrôles sont nécessaires pour concevoir votre UserForm.

Étiquette

Vous pouvez utiliser les étiquettes à des fins d'identification en affichant un texte descriptif, comme des titres, des légendes et / ou de brèves instructions.

Example

Zone de texte

Vous pouvez utiliser une zone de texte qui est une zone rectangulaire, pour taper, afficher ou modifier du texte. Vous pouvez également utiliser un TextBox comme champ de texte statique qui présente des informations en lecture seule.

Example

Zone de liste

Vous pouvez utiliser une zone de liste pour afficher une liste d'un ou plusieurs éléments de texte parmi lesquels un utilisateur peut choisir. Utilisez une zone de liste pour afficher un grand nombre de choix dont le nombre ou le contenu varient.

  • Insérez un ListBox sur l'UserForm.
  • Cliquez sur ListBox.
  • Tapez ProjectCodes pour le nom dans la fenêtre Propriétés de ListBox.

Il existe trois types de zones de liste -

  • Single-selection List box- Une zone de liste à sélection unique ne permet qu'un seul choix. Dans ce cas, une zone de liste ressemble à un groupe de cases d'option, sauf qu'une zone de liste peut gérer un grand nombre d'éléments plus efficacement.

  • Multiple selection List Box - Une zone de liste à sélection multiple permet un choix ou des choix contigus (adjacents).

  • Extended-selection List Box - Une zone de liste à sélection étendue permet un choix, des choix contigus et des choix non contigus (ou disjoints).

Vous pouvez sélectionner l'un de ces types de zones de liste dans la fenêtre Propriétés.

  • Cliquez avec le bouton droit sur l'UserForm.
  • Sélectionnez Afficher le code dans la liste déroulante. La fenêtre de code de UserForm s'ouvre.
  • Cliquez sur Initialiser dans la zone supérieure droite de la fenêtre de code.
  • Tapez ce qui suit sous Private Sub UserForm_Initialize ().
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
  • Cliquez sur l'onglet Exécuter sur le ruban.
  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante.

Ensuite, vous pouvez écrire du code pour les actions lors de la sélection d'un élément dans la liste. Sinon, vous pouvez simplement afficher le texte sélectionné, ce qui est le cas pour remplir le code de projet dans le rapport.

Boîte combo

Vous pouvez utiliser ComboBoxqui combine une zone de texte avec une zone de liste pour créer une zone de liste déroulante. Une zone de liste déroulante est plus compacte qu'une zone de liste mais oblige l'utilisateur à cliquer sur la flèche vers le bas pour afficher la liste des éléments. Utilisez une zone de liste déroulante pour choisir un seul élément de la liste.

  • Insérez un ComboBox sur l'UserForm.
  • Cliquez sur le ComboBox.
  • Tapez ProjectCodes2 pour Nom dans la fenêtre Propriétés de la zone de liste déroulante.
  • Cliquez avec le bouton droit sur l'UserForm.
  • Sélectionnez Afficher le code dans la liste déroulante.
  • La fenêtre de code de UserForm s'ouvre.

Tapez ce qui suit comme indiqué ci-dessous.

ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
  • Cliquez sur l'onglet Exécuter sur le ruban.
  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante.

Cliquez sur la flèche vers le bas pour afficher la liste des éléments.

Cliquez sur l'élément requis, par exemple, Project2016-5. L'option sélectionnée sera affichée dans la zone de liste déroulante.

CheckBox

Vous pouvez utiliser des cases à cocher pour sélectionner une ou plusieurs options qui s'affichent en cliquant dans les cases. Les options auront des étiquettes et vous pourrez visualiser clairement les options sélectionnées.

Une case à cocher peut avoir deux états -

  • Sélectionné (activé), indiqué par une coche dans la case
  • Effacé (désactivé), indiqué par une case claire

Vous pouvez utiliser des cases à cocher pour sélectionner des options dans une zone de liste déroulante pour économiser de l'espace. Dans un tel cas, la case à cocher peut également avoir un troisième état -

  • Mixte, c'est-à-dire une combinaison d'états d'activation et de désactivation, indiquée par un point noir dans la case. Cela sera affiché pour indiquer plusieurs sélections dans la zone de liste déroulante avec des cases à cocher.

  • Insérez des cases à cocher dans le formulaire utilisateur comme indiqué ci-dessous.

  • Cliquez sur l'onglet Exécuter sur le ruban.
  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante.
  • Cliquez dans les cases correspondant aux options sélectionnées.

OptionButton

Vous pouvez utiliser un bouton d'option, également connu sous le nom de bouton radio pour faire un seul choix dans un ensemble limité de choix mutuellement exclusifs. Un bouton d'option est généralement contenu dans une zone de groupe ou un cadre.

Un bouton d'option est représenté par un petit cercle. Un bouton d'option peut avoir l'un des deux états suivants -

  • Sélectionné (activé), indiqué par un point dans le cercle
  • Effacé (désactivé), indiqué par un blanc

Cadre

Vous pouvez utiliser un contrôle de cadre, également appelé zone de groupe pour regrouper les contrôles associés en une seule unité visuelle. En règle générale, les boutons d'option, les cases à cocher ou les contenus étroitement liés sont regroupés dans un contrôle de cadre.

Un contrôle de cadre est représenté par un objet rectangulaire avec une étiquette facultative.

  • Insérez un cadre avec la légende «Choix».

  • Insérez deux boutons d'option avec les légendes «Oui» et «Non» dans le contrôle de cadre. Les options Oui et Non s'excluent mutuellement.

  • Cliquez sur l'onglet Exécuter sur le ruban.
  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante.
  • Cliquez sur l'option sélectionnée.

Bouton à bascule

Vous pouvez utiliser un bouton bascule pour indiquer un état, tel que Oui ou Non, ou un mode, tel que activé ou désactivé. Le bouton alterne entre un état activé et un état désactivé lorsque vous cliquez dessus.

Insérez un bouton bascule sur UserForm comme indiqué ci-dessous -

  • Cliquez sur l'onglet Exécuter sur le ruban.

  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante. Le bouton bascule sera à l'état activé par défaut.

Cliquez sur le bouton bascule. Le bouton bascule sera désactivé.

Si vous cliquez à nouveau sur le bouton bascule, il sera activé.

Bouton de commande

Vous pouvez utiliser un bouton de commande pour exécuter une macro qui effectue certaines actions lorsque l'utilisateur clique dessus. Vous avez déjà appris à utiliser un bouton de commande sur une feuille de calcul pour exécuter une macro.

Le bouton de commande est également appelé bouton-poussoir. Insérez un bouton de commande sur l'UserForm comme indiqué ci-dessous -

  • Faites un clic droit sur le bouton de commande.
  • Tapez le code suivant dans le sous Commandbutton1_click ().
ProjectCodes2.DropDown
  • Cliquez sur l'onglet Exécuter sur le ruban.
  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante.

Cliquez sur le bouton de commande. La liste déroulante de la liste déroulante s'ouvre, car c'est l'action que vous avez écrite dans le code.

TabStrip

Vous pouvez insérer une bande d'onglets qui ressemble à des onglets Excel sur l'UserForm.

Barre de défilement

Vous pouvez utiliser une barre de défilement pour faire défiler une plage de valeurs en cliquant sur les flèches de défilement ou en faisant glisser la case de défilement.

Insérez une barre de défilement sur le formulaire utilisateur en le dessinant à la position requise et ajustez la longueur de la barre de défilement.

  • Faites un clic droit sur la barre de défilement.
  • Sélectionnez Afficher le code dans la liste déroulante. La fenêtre Code s'ouvre.
  • Ajoutez la ligne suivante sous ScrollBar1_Scroll ().
TextBox2.Text = "Scrolling Values"
  • Cliquez sur l'onglet Exécuter sur le ruban.
  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante.

Faites glisser la zone de défilement. Le texte - Valeurs de défilement sera affiché dans la zone de texte comme vous l'avez spécifié comme action de défilement de la barre de défilement.

MsgBox ()

Vous pouvez utiliser la fonction MsgBox () pour afficher un message lorsque vous cliquez sur quelque chose. Cela peut être une ligne directrice ou des informations ou un avertissement ou une alerte d'erreur.

Par exemple, vous pouvez afficher un message indiquant que les valeurs défilent lorsque vous commencez à faire défiler la zone de défilement.

Affichage de l'icône de la boîte de message

Vous pouvez utiliser des affichages d'icônes de boîte de message qui représentent le message spécifique. Vous disposez de plusieurs icônes de boîte de message en fonction de votre objectif -

  • Tapez le code suivant sous ScrollBar1_scroll.
MsgBox "Select Ok or Cancel", vbOKCancel, "OK  - Cancel Message" 
MsgBox "It's an Error!", vbCritical, "Run time result" 
MsgBox "Why this value", vbQuestion, "Run time result" 
MsgBox "Value Been for a Long Time", vbInformation, "Run time result" 
MsgBox "Oh Is it so", vbExclamation, "Run time result"
  • Cliquez sur l'onglet Exécuter sur le ruban.
  • Sélectionnez Exécuter Sub / UserForm dans la liste déroulante.
  • Faites glisser la zone de défilement.

Vous obtiendrez successivement les boîtes de message suivantes.

Conception de UserForm

Maintenant, vous avez une compréhension des différents contrôles que vous pouvez utiliser sur un UserForm. Sélectionnez les contrôles, regroupez-les si nécessaire et organisez-les sur le formulaire utilisateur selon une séquence significative. Écrivez les actions requises sous forme de code correspondant aux contrôles respectifs.

Reportez-vous au didacticiel VBA dans cette bibliothèque de didacticiels pour un exemple d'UserForm.