Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Insertion automatique en VBA Word
Dans ce premier volet, nous entamons la découverte des possibilités offertes par le
langage de programmation Visual Basic pour Word. Certes, nous allons débuter très simplement, chaque chose en son temps.
Document source
Pour la mise en situation, nous suggérons de récupérer un
courrier existant. Mais un document vierge fait aussi parfaitement l'affaire.
Il s'agit d'un courrier administratif type de réponse à des candidatures. Il a été mis en page, notamment avec les
retraits et les
taquets de tabulation. Ce courrier est loin d'être parfait.
- Dans la section Paragraphe du ruban Accueil, cliquer sur le bouton Afficher tout,
Cette action permet de rendre visibles les caractères masqués. Ils relatent notamment les opérations de l'utilisateur au clavier. C'est ainsi que vous voyez apparaître les marques de paragraphe mais aussi les tabulations.
A ce titre, vous constatez que des défauts existent. La deuxième tabulation dans le bloc
Réf. ne devrait pas être. Pour ce type de décalage, le retrait gauche doit être préféré. Toutes ces techniques nous les avions apprises et comprises au travers des
exercices Word. Mais ce n'est pas notre affaire ici. Nous souhaitons nous initier au
code VBA pour Word.
Formulations fréquentes
Plus bas dans le document, vous notez la présence d'un bloc de texte inscrit entre crochets (
[Formule de politesse]).
Il invite l'utilisateur à conclure le courrier par une formule de sympathie usuelle. Et dans les tâches administratives quotidiennes, ces types de formulation sont récurrents et nombreux. Plutôt que de les réécrire à chaque fois, nous proposons de personnaliser l'environnement de travail pour
automatiser ces actions.
Certes, il existe la
correction automatique de Word, tout à fait intéressante et puissante. Nous l'avions d'ailleurs largement exploitée à l'occasion d'une formation. Mais lorsque les expressions à formuler automatiquement sont nombreuses, l'exploitation des combinaisons de touches associées devient un casse-tête.
- Cliquer à gauche dans la marge en regard du bloc de la formule de politesse,
Cette action a pour effet de sélectionner la ligne entière avec sa marque de paragraphe. C'est donc le paragraphe qui est sélectionné. Nous le verrons, l'
objet Selection est important, que ce soit en
VBA Word ou en
VBA Excel. Naturellement, il désigne les éléments sélectionnés par l'utilisateur sur le document ou la feuille du classeur. Et comme il propose des
propriétés et
méthodes, il permet de manipuler les données encapsulées dans la sélection.
- Au clavier, réaliser le raccourci ALT + F11,
Grâce à lui, vous basculez dans l'
éditeur de code VBA Word.
- Dans l'explorateur de projet sur la gauche de l'écran, cliquer sur le document Normal,
Ce document est le
modèle Word (Normal.dotm). Tout ce qui est enregistré en son sein, perdurera pour toutes les utilisations à venir de
Word. Si nous avions choisi d'agir sur le document en cours, tout code enregistré n'existerait que pour ce document spécifique. Si d'aventure, vous ne visualisez pas le
document Normal dans l'arborescence, sachez qu'il suffit d'enregistrer une macro automatique pour le faire réapparaître.
- En haut de la fenêtre de l'éditeur VBA, cliquer sur le menu Insertion,
- Dans la liste des propositions, choisir de créer un nouveau Module,
De fait, un dossier nommé Module apparait dans l'
explorateur de projet. Il est associé au
modèle Normal et il héberge un élément nommé
Module1. C'est lui qui doit permettre d'accueillir les procédures de
code VBA à associer à des boutons pour réaliser des actions automatiques, quel que soit le document ouvert.
- Dans cet explorateur de projet, double cliquer sur cet élément Module1,
Ainsi, vous affichez sa feuille de code au centre de l'écran. Pour l'instant elle est totalement blanche car vierge.
- Dans cette feuille, créer la procédure vaMme comme suit :
Sub vaMme()
End Sub
Ce nom est arbitraire. Vous pouvez créer celui que vous souhaitez. Mais il est préférable de choisir des intitulés explicites et facilement identifiables. Ici, le
nom vaMme est l'abréviation du début de la formule :
Veuillez agréer Madame ... Par déclinaison, nous pourrons donc créer la
procédure vaMr pour la même formule de politesse au masculin. Une
procédure VBA est délimitée par les bornes
Sub et
End Sub.
- A l'intérieur de cette procédure, ajouter la ligne de code suivante :
Sub vaMme()
Selection.InsertBefore "Veuillez agréer..."
End Sub
Comme nous le disions, nous exploitons donc l'
objet VBA Selection. Au moment de taper un point pour appeler les
propriétés et
méthodes, la liste IntelliSense se déclenche. Elle énumère en vert les
méthodes (Actions) associées à l'
objet Selection. L'icône blanche en préfixe désigne les propriétés, soit les réglages qu'il est possible d'opérer sur l'
objet Selection, comme des paramétrages de police et de couleur par exemple. Ces
propriétés et
méthodes sont nombreuses. Il faut du temps pour les découvrir. Ici, nous sommes en phase d'initiation.
- Enfoncer la touche F5 du clavier pour exécuter ce code,
Il est aussi possible de cliquer sur le bouton à la flèche verte en haut de l'
éditeur VBA Word.
- Basculer ensuite sur le document Word (ALT + Tab),
Comme vous pouvez le voir, la sélection est toujours active mais elle s'est enrichie. Cette simple ligne de code a suffi pour insérer le texte programmé avant la sélection.
Et si nous n'avions sélectionné aucun texte, cette insertion se serait produite à l'emplacement du point d'insertion, soit à l'endroit du dernier clic à la souris.
- Revenir dans l'éditeur VBA Word (ALT + Tab),
- Dans la procédure, remplacer la méthode InsertBefore par la méthode InsertAfter,
Sub vaMme()
Selection.InsertAfter "Veuillez agréer..."
End Sub
- Puis, exécuter le code avec la touche F5 du clavier,
- Dès lors, basculer de nouveau sur le document Word (ALT + Tab),
Comme vous pouvez l'apprécier et comme l'indique le nom de cette méthode, nous sommes parvenus à insérer le même texte, mais après la sélection cette fois.
Et comme la marque de paragraphe était intégrée dans la sélection, l'
insertion automatique a été repoussée sur la ligne du dessous. Si elle n'avait pas été incluse, le texte aurait été greffé sur la même ligne, juste à la suite. Dans ce cas, il aurait fallu prévoir un espace de séparation dans le texte à insérer.
Maintenant, nous allons voir comment il est possible de remplacer la sélection active par un texte automatisé.
- Revenir dans l'éditeur VBA Word (ALT + Tab),
- Remplacer la précédente ligne de code VBA par la suivante :
Sub vaMme()
Selection.TypeText "Veuillez agréer, Madame, l'expression de mes sentiments les meilleurs."
End Sub
La
méthode TypeText permet de définir le texte à insérer tout en l'insérant elle-même. C'est la raison pour laquelle on parle bien de méthode.
- Enregistrer les modifications (CTRL + S) et exécuter le code (F5),
- Puis, basculer sur le document Word (ALT + Tab),
Comme vous pouvez le voir, notre sélection a effectivement été intégralement remplacée par notre
insertion automatique programmée. De fait, vous remarquez que la sélection a été désactivée.
Remarque importante : Notre code est enregistré dans le
modèle Word, le fichier Normal.dotm. Il gère naturellement les
macros. Si nous avions voulu conserver ce code uniquement pour le document en cours, nous aurions dû l'enregistrer sous le format docm. Un document usuel ne gère pas les macros pour des raisons de sécurité.
Bouton d'action
Vous en conviendrez, exécuter un traitement comme nous l'avons fait depuis l'éditeur, n'apporte que très peu d'intérêt. Ces procédures doivent se proposer comme des outils faciles d'accès. C'est pourquoi, au fil des découvertes par les
astuces, nous allons associer ces
macros VBA Ã des
boutons. Et ces
boutons, nous allons les intégrer dans un
ruban personnalisé. Et ce
ruban, nous allons le décomposer en sections pour regrouper les actions par thèmes. Ainsi nous offrirons à l'utilisateur une distribution ergonomique des outils.
- En haut de la fenêtre Word, cliquer droit n'importe où sur le ruban actif,
- Dans le menu contextuel, choisir la commande Personnaliser le ruban,
Une boîte de dialogue apparaît. Elle concerne les options générales de
Word. Et dans la liste de gauche, la catégorie
Personnaliser le ruban est active par défaut.
- Dans la liste de droite, cliquer sur le tout dernier onglet (Aide) pour le sélectionner,
- En bas de la boîte de dialogue, cliquer sur le bouton Nouvel onglet,
Cette action a pour effet d'insérer un
nouvel onglet accompagné d'une
section intitulée
Nouveau groupe.
- Cliquer sur la ligne Nouvel onglet pour la sélectionner explicitement,
- En bas de la boîte de dialogue, cliquer sur le bouton Renommer,
- Dans la zone de saisie qui s'invite, taper le nom Outils,
C'est cet intitulé qui apparaîtra dans la liste des onglets, en dernière position.
- Cliquer sur le bouton Ok pour valider ce nom,
- Cliquer maintenant sur la ligne intitulée Nouveau groupe pour la sélectionner,
- Cliquer de nouveau sur le bouton Renommer,
- Dans la zone de saisie de la boîte de dialogue, taper l'intitulé Textes,
Nous prévoyons en effet une
section pour accueillir les
boutons de macros réalisant des opérations sur des textes, comme celle que nous venons de créer. Comme vous pouvez levoir, il est aussi possible d'associer une icône graphique à ces
sections. Mais nous les utiliserons plutôt pour expliciter les
boutons.
- Cliquer sur le bouton Ok pour valider ce nom,
- Maintenant, déployer la zone déroulante au-dessus de la liste de gauche,
- Dans les propositions, choisir l'option Macros,
Fort logiquement, la
macro que nous avons créée précédemment est seule pour l'instant. Comme vous le constater, elle est bien préfixée du terme
Normal. Elle indique donc qu'elle sera fonctionnelle sur n'importe quel
document Word.
- Ensuite, cliquer sur le bouton Ajouter au centre de la boîte de dialogue,
Comme le
groupe Textes était toujours sélectionné, cette
macro s'insère naturellement au bon endroit. Désormais, c'est la ligne de notre bouton qui est sélectionnée.
- De fait, cliquer une fois encore sur le bouton Renommer,
- Dans la zone Nom complet, taper l'intitulé VA Mme,
Il s'agit d'une abréviation suffisamment explicite pour rappeler à l'utilisateur que ce
bouton a pour vocation d'insérer la formule de politesse au féminin.
- En bas de la liste, choisir par exemple l'icône du crayon,
Cette symbolique vient renforcer la signification du
bouton.
- Cliquer sur Ok pour valider,
- Puis, cliquer de nouveau sur Ok pour procéder à la création du ruban avec son bouton,
Comme vous pouvez le voir en haut de la
fenêtre Word, un
nouvel onglet se rend disponible en queue de liste. Il s'agit bien de notre
ruban Outils.
- Cliquer sur cet onglet Outils pour l'activer,
Certes, il apparaît très dépouillé à ce stade. Mais au fil de la progression, nous ajouterons de nouvelles fonctionnalités. Maintenant, à chaque fois que vous cliquez sur le
bouton VA Mme, la formule de politesse s'insère à l'endroit où est placé le point d'insertion. Il s'agit donc d'une bonne façon d'
automatiser certains traitements récurrents.
Pour finir, il conviendrait de dupliquer cette
macro VBA Word en modifiant le nom de la procédure copiée (vaMr) et en adaptant le texte à insérer (Monsieur).
Bien sûr et selon le même protocole que précédemment, il est opportun d'associer cette nouvelle
procédure à un nouveau
bouton à greffer dans la
section Textes du
ruban Outils.