Word dispose de différents outils pour fabriquer des formulaires.
Ce n'est pas toujours facile de s'y retrouver, voici donc un point sur le sujet.
Notez que le mot formulaire est un terme générique, je devrais plutôt parler de documents structurés, car l'utilisation peut en être diverse.
On distingue deux types de formulaires, ceux qui seront à remplir à la main et ceux qui seront à remplir avec Word. Cet article s'attache au deuxième type, les premiers n'étant pas un formulaire dans le langage wordien.
Pour commencer, tous les outils formulaires se trouvent sous l'onglet Développeur. Ce dernier n'est pas affiché par défaut. Si nécessaire, commencez par l'afficher.
Dans le groupe Contrôles, vous trouverez :
- Les contrôles de contenu (qui existent depuis la version 2007)
- Un bouton ouvrant une galerie où vous trouverez :
- les formulaires hérités
- les contrôles ActiveX
Pour l'insertion, quel que soit le contrôle, il suffit de cliquer sur le contrôle de son choix sur le ruban, et ce dernier s'insère dans le document, à l'emplacement du point d'insertion.
Les contrôles de contenu
Les contrôles de contenu
Ces contrôles existent depuis la version 2007 et ont été enrichis avec les versions suivantes. Voici la liste :
- Texte enrichi
- Texte brut
- Contenu d'image
- Galerie de blocs de construction
- Case à cocher
- Zone de liste déroulante
- Liste déroulante
- Sélecteur de date
- Contrôle de contenu répétitif (uniquement à partir de la v 2013).
NB : La différence entre les controles Texte enrichi et Texte brut est que le premier permet d'insérer autant de paragraphes que l'on souhaite. Le second permet d'insérer uniquement des sauts de ligne (en option) et la mise en forme est personnalisable uniquement pour l'ensemble du texte inséré).
NB2 : Concernant les listes déroulantes, seule la Zone de liste de déroulante est modifiable par l'utilisateur, c'est-à-dire que l'utilisateur pourra saisir une donnée qui n'existe pas dans la liste.
Notez qu'un contrôle de contenu fonctionne aussi dans un document verrouillé, même si ce n'est pas obligatoire.
Le contrôle de contenu répétitif
Disponible uniquement depuis la version 2013
Ce contrôle est prévu pour répéter aisément l'insertion d'autres contrôles présentant la même structure. Il peut par ailleurs être utilisés pour répéter d'autres informations qui ne sont pas forcément des contrôles, comme par exemple des lignes de tableaux. Et on peut imaginer une combinaison de tableaux et de contrôles de contenu.
Pour rester dans le concret, imaginez la création d'un tableau dont les lignes seraient répétitives. Il s'agirait de compléter ce tableau par une liste de nom, prénom, dates, etc. Il faut donc saisir un tableau avec le nombre de colonnes nécessaires, et dans les cellulescontiendront des contrôles de contenu (texte brut, date, etc.). Si une information est susceptible de revenir sur toutes ou la grande majorité des lignes, il faut la saisir "en dur".
Une fois la première ligne du tableau créée, sélectionnez-la, puis cliquez sur le bouton Contrôle de contenu répétitif. Ce que vous avez ajouté est presque invisible si ce n'est qu'un signe + est apparu à l'extrémité de la ligne. Ce signe est visible uniquement si le curseur est dans la ligne du tableau, et donc à l'intérieur du contrôle de contenu répétitif qui englobe toute la ligne du tableau, y compris les contrôles.
Il suffira maintenant à l'utilisateur de cliquer sur ce signe + pour répéter la ligne. Les contrôles seront répétés, mais ils seront vides et donc prêts à être complétés, et si une cellule contient une information peu ou pas variable sera répétée telle quelle, mais restera bien entendu modifiable, puisqu'il s'agit d'un texte ordinaire.
Personnalisation
Pour personnaliser un contrôle de contenu, commencez par activer le Mode Création (bouton Mode Création, groupe Contrôles).
Le texte par défaut de type "Cliquez ici pour entrer du texte" ou "Choisissez un élément" peut alors être modifié.
En cliquant ensuite sur le bouton Propriétés, vous accédez aux propriété du contrôle permettant de le personnaliser, par exemple :
- choix du style pour un contrôle de contenu de texte,
- remplissage de la liste déroulante,
- choix de la coche pour les cases à cocher (par défaut une croix),
- Format de la date pour le sélecteur de date,
- etc.
Deux styles peuvent être attribués à un contrôle de contenu :
- Le style pour le texte de l'indication à affecter
- Le style pour le texte saisi par l'utilisateur. Ce dernier se gère dans la boîte de dialogue Propriétés via laquelle un nouveau style peut être créé.
Automatisation
Word accompagne ces nouveaux contrôles par quelques macros événementielles qui s'inscriront dans ThisDocument. Il y en a six mais seules les suivantes pourront s'exécuter dans un code VBA, hors données XML :
- ContentControlAfterAdd : s'exécute lors de l'ajout d'un nouveau contrôle.
- ContentControlBeforeDelete : s'exécute lors de la suppression d'un contrôle.
- ContentControlOnEnter : s'éxécute au moment de la saisie du contrôle.
- ContentControlOnExit : s'exécute à la sortie du contrôle. C'est probablement cette macro la plus utile et donc la plus utilisée. Voir l'article.
Les champs de formulaire
Les contrôles de formulaire hérités
Les contrôles de formulaire hérités sont en fait des champs. Ils sont au nombre de trois et tiennent leur nom du fait qu'ils sont hérités des versions anciennes.
- Zone d'édition
- Case à cocher
- Zone de liste déroulante (non modifiable)
Voir ce tuto sur les champs, en particulier cette partie.
Contrairement aux contrôles de contenu, les contrôles de formulaire hérités ne peuvent fonctionner que dans un document verrouillé.
Pour verrouiller un document, assurez-vous que le Mode Création soit désactivé, puis :
- cliquez sur le bouton Restreindre la modification, qui se trouve dans le groupe Protéger, situé sous l'onglet Développeur et également sous l'onglet Révision.
- Dans le volet Restreindre la mise en forme et la modification qui s'est affiché à droite, cochez en 2 l'option Autoriser uniquement ce type de modifications dans le document, et choisissez Remplissage de formulaires dans la liste déroulante.
- Cliquez sur Activer la protection et mettez éventuellement un mot de passe.
Le passage d'un contrôle à un autre peut se faire via la touche Tab.
Personnalisation
Un champ de formulaire fonctionne uniquement si le document est protégé (protection formulaire). Pour personnaliser un tel champ, avant de protéger le formulaire, double-cliquez sur le champ afin d'ouvrir la boîte de dialogue d'option de champ qui vous permettra la personnalisation, par exemple :
- choix du texte par défaut,
- longueur maximale du texte,
- remplissage de liste déroulante,
- etc.
Vous remarquerez en particulier qu'un signet est affecté par défaut à tout champ de formulaire. Ce signet permettra d'être repris, soit pour reporter le texte à un autre endroit du document, et en particulier pour effectuer des calculs.
Par ailleurs, vous pouvez voir deux cases à cocher :
- Remplissage activé : cette case peut être décochée si le remplissage du champ se fait automatiquement soit par macro soit par calcul par exemple.
- Calculer à la sortie : cocher cette case va permettre de mettre à jour un champ dans le document qui dépend de ce champ de formulaire.
Automatisation
Une macro peut être déclenchée à l'entrée et à la sortie du formulaire. Il faudra donc commencer par écrire la macro, puis il suffira d'indiquer son nom dans les zones Au démarrage et À la sortie.
Les contrôles ActiveX
Les contrôles ActiveX
Les contrôles ActiveX sont des contrôles par définition programmables. On les utilisera donc en priorité lorsque l'on veut développer un outil via VBA. Cela étant, on peut quand même les utiliser dans un document sans programmation, en particulier pour certains contrôles inexistants dans les deux premiers types.
- Case à cocher
- Zone de texte
- Etiquette
- Case d'option
- Image
- Toupie
- Zone de liste déroulante
- Bouton de commande
- Zone de liste
- Barre de défilement
- Bouton bascule
NB : Les cases d'option manquent vraiment dans les contrôles précédents. On pourra donc utiliser les cases d'option des Contrôles ActiveX si besoin est, la macro n'étant pas indispensable. Par contre les contrôles Toupie, zone de listes, barre de défilement, bouton bascule sont vraiment liés à l'utilisation de VBA.
Personnalisation
Un contrôle ActiveX ne peut se modifier qu'en Mode Création. Lorsque vous insérez un contrôle ActiveX, le Mode Création est automatiquement activé.
La personnalisation de ce contrôle se fait via le bouton Propriétés qui ouvre une boîte de dialogue avec toutes les propriétés du contrôle. Notez en particulier :
- La propriété Name qui permet de savoir de quel contrôle on parle (en VBA)
- les propriétés BackColor et ForeColor, la première permettant de choisir une couleur de fond, et la seconde une couleur pour la police,
- la propriété BackStyle permettant de choisir par exemple un fond transparent, et ce même si vous avez choisi une couleur de fond,
- la propriété WordWrap qui permet ou non les retours à la ligne dans un contrôle de texte, à condition toutefois que la propriété Multiline soit True.
- la propriété GroupName pour les boutons d'option, qui permet de faire des groupes de bouton d'option : si pour plusieurs boutons d'option, vous mettez le même nom pour la propriété GroupName, vous ne pourrez cocher qu'un seul de ces boutons d'option, les rendant ainsi dépendant les uns des autres.
Automatisation
Les contrôles ActiveX sont des contrôles programmables. Aussi on peut à peu près tout imaginer en matière de macro. De nombreux événements sont disponibles, contrairement aux autres contrôles qui connaissent surtout l'événement Sortie. Pour les contrôles ActiveX, les événements utiles sont les suivants :
- Change : le code s'exécute lors d'un changement dans le contrôle : le plus utile et le plus utilisé.
- DblClick : le code s'exécute lors du double clic.
- GotFocus : le code s'exécute lorsque l'on entre dans le contrôle.
- KeyDown, KeyPress : le code s'exécute lorsqu'on appuie sur une touche dans cet ordre. Notez toutefois que KeyDown renvoie le code caractère du clavier (toutes les touches y compris les touches de fonction, les touches fléchées, etc.) alors que KeyPress renvoie le code ASCII du caractère saisi.
- KeyUp : le code s'exécute après avoir appuyé sur une touche et renvoie le code caractère ASCII comme pour KeyDown.
- LostFocus : le code s'exécute lorsque l'on quitte le contrôle.
- MouseDown : le code s'exécute sur un clic de souris.
- MouseMove : le code s'exécute sur un mouvement de souris.
- MouseUp : le code s'exécute après le clic de souris.
Userform et contrôles
Pour créer un Userform avec des contrôles, voyez ce tuto.