Chaque fois que vous enregistrez un fichier ou lancez une impression dans un logiciel, une fenêtre de dialogue apparaît. Avec Excel, vous êtes en mesure de créer ce type de fenêtre afin de faciliter la saisie de données pour les
autres utilisateurs d'un classeur. Comparée à la grille de saisie de tout tableur, une telle fenêtre, appelée formulaire dans Excel, offre de multiples avantages. Vous pouvez encadrer très précisément la saisie de données, en proposant, par exemple,
des listes déroulantes limitant le nombre de choix possibles. Certes, un formulaire est complexe à créer, mais il peut ensuite être utilisé par un néophyte car il ressemble à une fenêtre de dialogue standard. Dans cette double page, nous allons vous
guider pas à pas dans l'élaboration d'un tel formulaire. Pour cela, nous utiliserons des macrocommandes en langage VBA, dont nous vous expliquions les bases dans le précédent numéro de
l'Oi.1. Posez le problème
Pour illustrer nos manipulations, nous partirons d'une base de données recensant les membres d'un club de modélisme, comme celle illustrée ci-contre. Le formulaire que vous allez créer servira à ajouter une personne à cette liste.
Cette base comporte six colonnes (ou champs). Certains champs, comme le
Nom ou le
Prénom, sont en saisie libre car les données tapées n'y sont pas contrôlées. Mais d'autres sont soumis à des restrictions. Ainsi, le champ
Sexe ne peut recevoir que
F (féminin) ou
M (masculin). Le champ
Cotisation ne doit contenir que des valeurs numériques. Dans le champ
Spécialité, on ne peut saisir que l'un des
contenus suivants :
Avions, Bateaux, Trains ou Voitures. Enfin, le champ
Région doit recevoir l'un des six libellés ci-après :
Est, Nord, Ouest, Sud, Centre ou
Paris et RP
(voir
écran). L'objectif : élaborer un formulaire qui intègre l'ensemble de ces contraintes.
2. Créez le formulaire de saisie
Ouvrez l'Editeur Visual Basic en déroulant le menu
Outils, Macro, Visual Basic Editor. Déroulez le menu
Insertion, UserForm. Une fenêtre vide, nommée
UserForm1, apparaît à l'écran. C'est votre
formulaire. Juste à côté, se trouve la boîte à outils
Contrôles (voir écran) : vous l'utiliserez pour ajouter des zones de saisie et des listes déroulantes dans votre formulaire. Faites glisser, à la souris, le coin inférieur droit
du formulaire jusqu'à lui donner une taille qui corresponde au résultat attendu
(voir l'écran qui illustre l'étape 11).3. Modifiez le titre
Cliquez dans le formulaire et appuyez sur
F4 : vous faites apparaître la fenêtre
Propriétés de l'objet sélectionné (ici, le formulaire lui-même). Dans le champ
Caption, qui détermine ce qui
sera affiché à l'écran, tapez
Saisie d'un nouveau membre (voir écran) et appuyez sur
Entrée : ce texte s'affiche dans la barre de titre du formulaire. Enfin, cliquez dans le champ
(Name), tapez
FrmSaisie puis appuyez sur
Entrée. Nous adoptons ici une règle, couramment utilisée, qui consiste à donner au formulaire et aux objets qu'il contient un nom dont les trois premières lettres en indiquent la nature
(
Frm pour Formulaire,
Btn pour bouton,
Lst pour zone de liste, etc. ).
4. Tapez les intitulés
Vous allez commencer par ajouter une zone de texte : cliquez dans le formulaire pour faire apparaître la boîte à outils
Contrôles. Dans cette boîte, cliquez sur le bouton
Intitulé et tracez un rectangle
en haut du formulaire. Appuyez sur
F4 pour ouvrir la fenêtre
Propriétés. Il est inutile de nommer les champs de type
Intitulé : ils ne servent qu'à afficher des textes. Dans le champ
Caption,
tapez
Fiche de saisie. Comme le titre est trop petit, cliquez dans le champ
Font, puis sur le bouton
... qui apparaît à droite. Dans la fenêtre de polices, choisissez du
Tahoma, en
gras avec une taille de
16 points et validez par
OK. Vous allez ensuite placer les intitulés de chaque champ dans votre formulaire. Reproduisez les étapes de ce paragraphe jusqu'à obtenir un résultat proche de
notre exemple
(voir écran).5. Ajoutez un groupe d'options
Le champ
Sexe est particulier : il ne peut prendre que deux états (masculin ou féminin).Pour le créer, cliquez sur le bouton
Cadre et dessinez un rectangle sur le formulaire. Nommez-le
FrmSexe et tapez, dans la propriété
Caption, le texte
Sexe. Puis, à l'intérieur de ce
cadre, dessinez deux boutons d'options
(voir écran), que vous nommerez
OptHomme et
OptFemme, avec les propriétés Caption respectives
Masculin et
Féminin. Lorsque vous utiliserez le
formulaire, si vous sélectionnez l'un de ces boutons, l'autre sera automatiquement désélectionné.
6. Definissez les zones de texte
Dans la boîte à outils
Contrôle, cliquez sur
Zone de texte. Tracez un rectangle en face de l'intitulé
Nom et donnez à cette zone de texte le nom
TxtNom. De la même façon, ajoutez une
zone de texte
TxtPrenom en face de l'intitulé
Prénom, et une zone de texte
TxtCotisation après l'intitulé
Cotisation.7. Disposez les listes déroulantes
Dans la boîte
Contrôles, cliquez sur
Zone de liste (pas sur
Zone de liste modifiable). Tracez un rectangle devant l'intitulé
Spécialité et donnez à cette zone de liste le nom
LstSpecialites (ne mettez pas de caractères accentués dans les noms). De la même façon, dessinez, devant l'intitulé
Région, une zone de liste que vous nommerez
LstRegion
(voir écran). Si votre zone
de liste n'est pas assez haute pour afficher tous les éléments qu'elle contient, des barres de défilement seront automatiquement ajoutées.
8. Placez les boutons
Un formulaire comporte toujours au moins deux boutons :
OK pour valider la saisie et
Annuler pour l'abandonner. Dans la boîte
Contrôles, cliquez sur
Bouton de commande et
dessinez un premier bouton. Donnez-lui le nom
BtnOK et saisissez
OK dans son champ
Caption. De la même façon, ajoutez un autre bouton nommé
BtnAnnuler et dont le champ
Caption
contiendra
Annuler. Votre formulaire a son aspect définitif
(voir écran), mais il n'est pas encore exploitable.
9. Préparez la saisie...
Dans le volet de gauche de l'éditeur VBA, double-cliquez sur le dossier
Modules, puis sur
Module1 (si ce dernier n'apparaît pas, déroulez le menu
Insertion, Module). Dans le volet de droite de
l'éditeur VBA, tapez le
listing 1. Cette macro a trois fonctions : placer le point d'insertion en dessous de la dernière ligne du tableau, ajouter des éléments aux listes déroulantes (les fonctions
AddItem) et ouvrir
le formulaire (l'instruction
Show).
10. ... et contrôlez-la
Dans l'éditeur VBA, double-cliquez sur
FrmFormulaire pour afficher le formulaire. Double-cliquez sur le bouton
Annuler et, entre les lignes
Private Sub CmdAnnuler_Click() et
End Sub,
tapez la commande
Unload Me. De cette manière, quand vous cliquerez sur
Annuler, le formulaire sera déchargé (
unload) de la mémoire. De la même façon, double-cliquez sur le bouton
OK et,
entre les lignes
Private Sub CmdOK_Click() et
End Sub, tapez le
listing 2. Ici, tant que la valeur saisie dans le champ
TxtCotisation n'est pas numérique, on demande à l'utilisateur de la
ressaisir. Puis, on écrit, dans les colonnes successives du tableau, les contenus des champs
TxtNom, TxtPrenom... (la fonction
UCase transforme en majuscules la valeur saisie). La variable
OptHomme, vraie
ou fausse, détermine la lettre (
M ou
F) à écrire en colonne
C. Enfin, les deux dernières instructions
. Offset récupèrent les valeurs retenues dans les listes déroulantes.
11. Testez le formulaire
Revenez sous Excel, tapez
Alt +
F8 pour ouvrir la fenêtre
Macros, sélectionnez
Saisie et cliquez sur
Exécuter. Votre formulaire apparaît. Saisissez et choisissez les
valeurs
(voir écran), puis cliquez sur
OK : les données sont écrites dans la première ligne vierge de la feuille de calcul, sous les enregistrements existants.
Votre opinion