formateur informatique

Apprendre à programmer en VBA Word

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Apprendre à programmer en VBA Word
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
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,
Bouton Word pour afficher les caractères invisibles dans le document

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]).

Bloc de texte inscrit entre crochets à remplacer en VBA Word

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,
Sélectionner automatiquement une ligne Word en cliquant en regard à gauche dans la marge

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,
Nouveau module de code VBA Word dans le modèle Normal

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


Méthode VBA Word InsertBefore pour ajouter du texte avant la sélection

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,
Exécuter le code de la procédure VBA Word

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.

Insérer du texte dans un document Word avec le code VBA

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.

Insérer automatiquement du texte après la sélection en VBA Word

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),
Insérer automatiquement une formule de politesse dans un paragraphe Word en VBA

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,
Personnaliser le ruban et les onglets Word pour ajouter des boutons de macro

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,
Créer un nouvel onglet Word pour accueillir les boutons VBA

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,
Créer un nouveau groupe ou section dans un nouveau ruban Word

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,
Ajouter un bouton de macro VBA dans un nouveau ruban Word

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,
Donner un nom et une icône graphique à une bouton de macro VBA Word

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).

Dupliquer une procédure de code VBA Word pour l-adapter

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.

Boutons de macro VBA Word dans ruban personnalisé pour formules de politesse

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn