Les champs de formulaires et VBA

Petit didacticiel tout simple pour apprendre à créer un champ dans Word 2010, et le remplir automatiquement par macro.

Créez un nouveau document Word 2010.

Ecrivez Nom :

Mettez une zone ab|, comme ceci :

Ca donne ceci :

Double-cliquez sur ce champ de formulaire, ça ouvre cette boîte de dialogue. Remplissez-là comme ceci :

SIGNom nous servira en VBA pour pouvoir désigner cette zone de texte.

Cliquez maintenant au début de "Nom :", et insérez un bouton, comme ceci :

Ca donne ceci :

On va lui changer son texte. Clic droit sur le bouton :

Ecrivez "GO !", et cliquez ensuite ailleurs dans le document Word pour valider :

Ensuite double-cliquez sur votre bouton. Ca ouvre l'éditeur VBA. Ecrivez FormFields("SIGNom").Result = "Dupont", juste ici :

Ca veut dire que quand on va cliquer sur le bouton, VBA va remplir automatiquement le champ qu'on a appelé SIGNom avec Dupont, tout bêtement.

Fermez VBA :

Pour le moment, si on clique sur le bouton, ça ne marche pas : ça sélectionne juste le bouton.

Désactivez le mode création en cliquant ici :

Ca ne fait rien d'autre que d'enlever la couleur orange du bouton :

Maintenant, cliquez sur votre bouton GO ! : Effectivement, il remplace Tralala (valeur par défaut de base) par Dupont :

Ce qui est idiot, c'est que vous pouvez encore écrire ailleurs que dans les champs de forumulaire. Par exemple, vous pourriez écrire "Le nom" à la place de "nom". Et, encore plus idiot, si vous cliquez sur Dupont pour écrire "Martin", ça bousille carrément le champ (les deux petits [crochets] qui l'encadrent disparaissent.

J'essaie. Je clique sur Dupont, ça le sélectionne, j'écris Martin à la place : ça enlève les crochets du champ. Je clique ensuite sur GO ! Et j'ai une grosse erreur, puisque le champ a été effacé :

Pour utiliser un document Word avec des champs de formulaire, il faut protéger ce document, et ne laisser libre QUE les champs de formulaires (Le bouton GO ! et EDINom).

Si vous avez fait les mêmes tests que moi, annulez jusqu'à ce que vous retrouviez votre champ avec Tralala.

Cliquez sur "Restreindre la modification". Ca ne restreint rien du tout, il se contente d'afficher le volet "Restreindre la mise en forme et la modification" :

Remplissez les cases comme ceci, et cliquez sur "Activer la protection" :

Si vous mettez un mot de passe, vous devrez vous en souvenir pour pouvoir enlever la protection. On n'est pas obligé. Cliquez juste sur OK :

Voilà, c'est fini.

Maintenant, vous pouvez cliquer sur "nom :" et essayer d'écrire par exemple à la place "Prénom :", vous n'y arrivetez pas. Par contre, si vous cliquez sur la zone EDINom, qui contient Tralala, vous pouvez écrire Martin. Essayez :

Et cette fois, ça n'efface pas les petits [crochets] !

Maintenant, cliquez sur le bouton GO ! : Il remplace Martin par Dupont :

Si vous désirez modifier la structure de votre formulaire, il faut cliquer sur "Désactiver la protection" :

Maintenant, vous pouvez écrire en dehors de vos champs de formulaire. Vous pouvez également écrire dans les champs de formulaire, mais ça efface les [Crochets], et vous pouvez encore cliquer sur le bouton : il va encore écrire "Dupont".

Pour être vraiment en mode de création pour de bon, y compris le bouton programmé en VBA, pensez à réactiver le mode création :

---