Formulaires utilisateur Excel - Conseils Excel

Table des matières
Excel 97 a introduit de nouveaux formulaires utilisateur. En anglais, apprenez-moi à créer et à utiliser une zone de liste.

MrExcel a récemment terminé une application personnalisée pour l'un de nos lecteurs. Dans cette application Excel, l'utilisateur entrerait 150 points de données pour un numéro de pièce spécifique sur la feuille.

1. En cliquant sur un bouton, ce numéro de pièce et les valeurs de données associées sont validés dans une base de données sur Sheet2. C'était bien, mais nous avions besoin d'un moyen pour l'utilisateur d'appeler un enregistrement de la feuille 2 afin qu'il puisse examiner les entrées. Je voulais permettre à l'utilisateur d'ouvrir un formulaire avec une liste déroulante montrant tous les éléments de la feuille

2. L'utilisateur pouvait faire défiler, choisir un élément, puis je tirerais ces valeurs de la feuille 2 à la feuille 1.

Comme beaucoup d'entre vous, j'ai commencé à écrire des macros Excel dans Excel 5.0. Tout cet éditeur de macros dans Excel 97 est un peu intimidant. Pour le conseil de cette semaine, je vais vous montrer, étape par étape, comment créer la zone de liste pour ce projet. Cette semaine, l'accent est mis uniquement sur la liste déroulante. Le public cible est quelqu'un qui connaît les bases des macros Excel, mais qui n'a jamais utilisé de formulaire pour interagir avec une macro.

Première étape: j'ai changé les macros existantes pour que lorsqu'elles ajoutent un enregistrement à la feuille 2, la macro nomme la plage contenant les numéros de pièce à nommer "PartList". Il y a un titre dans la cellule A1, avec le premier élément dans la cellule A2. J'ai utilisé la commande End pour trouver la dernière ligne:

LastRow = Range("A6000").End(xlUp).Row ActiveWorkbook.Names.Add Name:="PartList", RefersTo:="=Sheet2!$A$2:$A$" & LastRow

Deuxième étape: mise en page du formulaire de liste Suivez ces étapes:

  • Démarrez Visual Basic Editor en appuyant sur alt-F11
  • Dans le menu, sélectionnez Insertion> Formulaire utilisateur. L'éditeur doit vous donner un UserForm1 vide.
  • Si vous ne voyez pas la boîte Properties-UserForm1 dans le coin inférieur gauche, cliquez sur l'icône "Propriétés Fenêtre" - cela ressemble à une main avec un doigt pointant vers une feuille blanche.
  • La quatrième entrée dans la fenêtre des propriétés est Légende. À l'heure actuelle, la légende sera UserForm1. Cliquez sur la case à droite de Légende dans la fenêtre Propriétés et tapez un nouveau titre pour le formulaire. J'ai appelé le mien "Sélectionnez un numéro de pièce à examiner". J'ai laissé toutes les autres propriétés du formulaire dans leur état par défaut.
    Création d'une zone de liste à l'aide du formulaire utilisateur
  • Cliquez à nouveau n'importe où dans le formulaire utilisateur et la boîte à outils des contrôles apparaîtra.
  • Dans la boîte à outils Contrôles, choisissez la lettre A. Cliquez et faites glisser pour créer une zone d'étiquette en haut du formulaire. Il a par défaut une légende de Label1. Cliquez à nouveau à l'intérieur de la zone de texte et vous pouvez modifier la légende. Mettez les instructions à l'utilisateur ici: "Choisissez un élément dans la liste ci-dessous et cliquez sur OK pour examiner les valeurs".
  • Cliquez sur le formulaire, mais en dehors de la zone d'étiquette et vous verrez à nouveau la boîte à outils de contrôle. Le quatrième élément de la rangée supérieure est un outil de liste déroulante. Cliquez dessus et faites-le glisser dans le formulaire utilisateur pour créer une zone de liste déroulante. C'est là que la liste des numéros de pièces apparaîtra. Le nom par défaut est ComboBox1.
    Propriétés de la liste déroulante
  • La fenêtre des propriétés va maintenant vous montrer les propriétés de ComboBox1. Faites défiler les propriétés jusqu'à ce que vous voyiez la propriété RowSource. Pour la propriété RowSource, tapez = Sheet2! PartList
  • Vous pouvez maintenant exécuter un test rapide pour vous assurer que tout fonctionne correctement. Cliquez sur la barre de titre de votre formulaire utilisateur pour sélectionner le formulaire entier. Cliquez maintenant sur l'icône «play» (elle ressemble au bouton de lecture de votre magnétoscope). Vous serez renvoyé à votre classeur Excel et aurez notre formulaire utilisateur simple. Si vous cliquez sur la liste déroulante des numéros de pièces, vous devriez voir une liste de numéros de pièces valides. Choisissez-en un et il restera dans la zone de liste déroulante. Jusqu'ici, pas trop excitant. Cliquez sur le petit X dans le coin supérieur droit pour fermer la boîte.
  • Revenez à l'éditeur Visual Basic. Cliquez sur le formulaire utilisateur pour afficher la boîte à outils de contrôle. Cliquez sur l'outil CommandButton et dessinez un bouton. Modifiez la légende pour qu'elle soit OK à l'aide de la fenêtre Propriétés - CommandButton1.
  • Dessinez un deuxième bouton et nommez-le Annuler.
  • Nous avons presque fini. Lions un peu de code au bouton Annuler. Cliquez avec le bouton droit sur le bouton Annuler et sélectionnez "Afficher le code". L'éditeur configurera vos instructions Sub et End Sub. Entre eux, tapez une ligne de code:
    UserForm1.Hide
  • Oui, c'est tout ce qu'il faut pour attribuer un code à un bouton. Pour revenir au formulaire utilisateur, double-cliquez sur les mots UserForm1 dans la fenêtre Projet. (Vous ne voyez pas la fenêtre du projet? Appuyez sur l'icône Explorateur de projet, juste à gauche de l'icône Propriétés.)
  • Pour terminer l'utilisateur form1, faisons quelque chose avec le bouton OK. Lorsque l'utilisateur clique sur OK, je veux que la valeur de la zone de liste apparaisse dans la cellule A2 de la feuille Sheet1, puis je veux lancer une macro que j'avais précédemment écrite appelée ReviewItem. Cliquez avec le bouton droit sur le bouton OK et sélectionnez Afficher le code. Entrez ce code pour Private Sub CommandButton1_Click ():
    Worksheets("Sheet1").Range("A2") = UserForm1.ComboBox1.Value UserForm1.Hide ReviewItem

Toutes nos félicitations! Vous avez terminé votre premier formulaire utilisateur. Pour faire apparaître le formulaire, exécutez une macro qui a cette ligne:

UserForm1.Show

Le formulaire ressemblera à quelque chose comme ceci:

Formulaire utilisateur terminé

Articles intéressants...