formateur informatique

Débuter avec VBA Word grâce aux macros

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Débuter avec VBA Word grâce aux macros
Livres à télécharger


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


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Apprendre VBA par les macros

Dans le volet précédent, nous avons découvert l'objet VBA Selection avec certaines de ses méthodes pour insérer du texte dans le flux du document. Mais comme nous l'avions démontré à l'occasion de la découverte du VBA pour Excel, les macros automatiques sont riches d'enseignements. Bien sûr, elles ne permettent pas de réaliser toutes les prouesses. Mais elles offrent la possibilité de dénicher certains objets de programmation et de comprendre certaines constructions. En d'autres termes, elles peuvent tracer la voie pour faciliter l'implémentation d'un code plus complexe. Avec cette nouvelle astuce, nous allons découvrir en toute simplicité, comment se faire aider par ces fameuses macros automatiques.

Macro pour insérer du texte
Pour débuter simplement, nous proposons de créer une macro basique. Son rôle est d'insérer automatiquement un texte qui répond à des besoins fréquents. En consultant le code généré, nous pourrons vérifier si les objets et méthodes employés sont différents de ceux que nous avons enseignés dans le précédent volet. Pour les démonstrations, une fois n'est pas coutume, un document vierge fera parfaitement l'affaire.

Pour la suite, le ruban Développeur est nécessaire. S'il n'est pas visible dans votre environnement, vous devez l'activer. Pour cela : ·
  • Cliquer droit n'importe où sur le ruban actif,
  • Dans le menu contextuel, choisir l'option Personnaliser le ruban,
Accéder aux propriétés des rubans dans Microsoft Word

La boîte de dialogue des options générales de Word apparaît. Dans la liste de gauche, la catégorie Personnaliser le ruban est sélectionnée.
  • Dans la liste de droite, cocher la case Développeur,
  • Puis, cliquer sur Ok pour valider l'insertion du ruban,
De retour sur le document, vous notez effectivement la présence d'un nouvel onglet en fin de liste.
  • Cliquer sur cet onglet Développeur pour activer son ruban,
Il est composé de quelques sections. Celle qui nous intéresse pour l'instant est la première, tout à fait à gauche. Elle est intitulée Code.

Grâce à elle et comme nous l'évoquions, nous proposons d'enregistrer une macro permettant d'insérer du texte.
  • Dans cette section Code, cliquer sur le bouton Enregistrer une macro,
  • Dans la boîte de dialogue qui suit, la nommer Signature,
  • Dans la zone Enregistrer la macro, choisir le document actif,
Si vous ne l'avez pas encore enregistré, il est intitulé Document1. Nous l'avons expliqué dans le volet précédent. En choisissant le modèle (Normal.dotm), la macro sera fonctionnelle pour toutes les utilisations à venir de Word. Ici, nous réalisons des essais. Il n'est donc pas question d'engorger la librairie de parasites. Mais dès lors, souvenez-vous d'un point important, si vous souhaitez conserver ce document, vous devez l'enregistrer avec l'extension docm. Sinon, les macros ne seront pas gérées.
  • Cliquer sur le bouton Ok en bas de la boîte de dialogue pour débuter l'enregistrement,
  • Taper le texte : Cordialement,
  • Enfoncer alors la touche Entrée du clavier pour créer un paragraphe,
  • Sur ce nouveau paragraphe, taper le texte : Le Directeur Général,
  • Dans la section Code du ruban Développeur, cliquer sur le bouton Arrêter l'enregistrement,
Cette dernière étape ne doit jamais être oubliée. Le cas échéant Word continue d'enregistrer la moindre de vos actions qu'il traduit en langage VBA.
  • Réaliser maintenant le raccourci clavier ALT + F11,
Nous basculons ainsi dans l'éditeur de code VBA Word. Nous aurions aussi pu cliquer sur le bouton Visual Basic, dans la section Code du ruban Développeur.
  • Dans l'explorateur de projet, déployer le dossier Modules pour le document en cours,
  • Puis, double cliquer sur l'élément NewMacros,
Il s'agit du module créé automatiquement par Word pour héberger le code VBA ayant traduit les actions que nous avons opérées pendant l'enregistrement. Et nous affichons ainsi la procédure Signature dans sa feuille de code.

Procédure de code VBA Word enregistrée automatiquement par création de la macro automatique Word

Et comme vous pouvez le voir, le code est conforme à nos attentes. Nous avons réalisé trois actions traduites par trois lignes. Tout d'abord, c'est bien la méthode TypeText de l'objet Selection qui est utilisée pour insérer du texte à l'emplacement du point d'insertion. Nous l'avons découverte lors du précédent volet consistant à débuter l'initiation au VBA Word.

Ces méthodes et propriétés d'ailleurs, s'appellent par le point qui suit le nom de l'objet. Il suffit de supprimer ce point et de le recréer pour le constater.

Appeler propriétés et méthodes VBA Word pour un objet de programmation avec intellisense

Nous en avons déjà parlé, les méthodes (actions) sont associées à une icône verte tandis que les propriétés (réglages) sont préfixées d'une icône blanche. Nous aurions d'ailleurs pu en profiter pour pousser l'enregistrement de la macro afin de découvrir quelles propriétés sont utilisées pour modifier les alignements ou appliquer des retraits. Mais nous aurons l'occasion d'y revenir.

Désormais donc, nous savons comment insérer des lignes de texte en VBA grâce à la méthode TypeText. Et comme l'enseigne la ligne suivante, nous savons donc créer des paragraphes grâce à la méthode TypeParagraph de l'objet Selection. De fait, nous sommes en mesure d'enrichir des macros terminées. Nous pourrions ici ajouter une information supplémentaire dans un nouveau paragraphe.

Sub Signature()
'
' Signature Macro
'
'
Selection.TypeText Text:="Cordialement"
Selection.TypeParagraph
Selection.TypeText Text:="Le Directeur Général"
Selection.TypeParagraph
Selection.TypeText Text:="prduc@savancis.com"

End Sub


Dès lors, si vous exécutez la procédure avec la touche F5 du clavier et que vous revenez sur le document Word, vous constatez effectivement l'insertion automatique du bloc de trois lignes.

Macro pour formater le texte
Désormais, il est temps de découvrir en surface les instructions utilisées par VBA Word pour réaliser des ajustements de mise en forme.
  • Sur le document, sélectionner le texte : Le Directeur Général,
  • Dans le ruban Développeur, cliquer sur le bouton Enregistrer une macro,
  • La nommer mef par exemple pour Mise en Forme,
  • Choisir de l'enregistrer dans le document actif (Document1),
  • Puis, cliquer sur le bouton Ok pour démarrer l'enregistrement,
  • Dans la section Police du ruban Accueil, cliquer sur le bouton G,
  • Avec la seconde liste déroulante, passer la taille du texte à 14 pt,
  • Avec le bouton A à droite de la section Police, choisir un bleu foncé pour la couleur du texte,
  • Enfin, cliquer sur le bouton Arrêter l'enregistrement dans le ruban Développeur,
Nous souhaitons maintenant découvrir la transcription en VBA.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur de code,
Vous notez effectivement la présence d'une procédure, nommée avec l'intitulé que nous avons fourni pour l'enregistrement.

Sub mef()
'
' mef Macro
'
'
Selection.Font.Size = 14
Selection.Font.Bold = wdToggle

End Sub


Mais à notre grande surprise, les trois actions ont été traduites en deux lignes. Le plus surprenant est effectivement l'absence du réglage sur la couleur. Avec une macro automatique d'Excel, nous aurions bien obtenu la traduction de cette action. Mais qu'à cela ne tienne, la voie nous est ouverte.

Tout d'abord nous retrouvons l'incontournable objet VBA Selection. Et, à l'instar des styles CSS pour la mise en page des pages Web, c'est une propriété intermédiaire (Font ici), qui permet de descendre en cascade jusqu'aux attributs à régler. Font est la propriété qui désigne la police de l'objet Selection, donc de la sélection active sur le document. Mais la police est une propriété générale. Grâce à l'attribut Size, nous définissons la taille. Grâce à l'attribut Bold, nous définissons le style gras. La valeur qui lui est affectée (wdToggle) est d'ailleurs assez surprenante. Elle n'applique pas le style gras. Elle fait la bascule. Si le texte est en gras, le style lui est enlevé, sinon il lui est appliqué. Donc, nous pourrions d'ores et déjà adapter le code comme suit :

Sub mef()
'
' mef Macro
'
'
Selection.Font.Size = 14
Selection.Font.Bold = True
End Sub


Avec le booléen True, le style est forcé en gras. Avec le booléen False, il serait enlevé.
  • A la suite, du code de cette procédure, inscrire l'objet Selection suivi d'un point (Selection.),
  • Dans la liste Intellisense, choisir la propriété Font,
  • Puis, taper de nouveau un point,
Comme vous pouvez le voir, une nouvelle liste apparaît. Elle offre tous les attributs qu'il est possible de régler pour la police, donc pour la propriété Font.
  • Choisir la propriété ColorIndex,
Propriété ColorIndex en VBA Word pour changer la couleur du texte

Elle parle d'elle-même. Associée à la propriété Font, elle permet de modifier la couleur de police.
  • Ensuite, taper le symbole égal pour l'affectation à suivre, soit le réglage à opérer,
Valeur affectée à la propriété ColorIndex pour la couleur de police en VBA Word

Là encore IntelliSense se déclenche. Le VBA est définitivement ergonomique. Cette liste propose les valeurs de couleurs qu'il est possible d'appliquer à cet attribut.
  • Double cliquer par exemple sur la valeur wdBlue pour la valider,
Wd est l'abréviation de Word. Et Blue vous l'avez compris, représente le bleu. Sachez qu'il est aussi possible d'exploiter la fonction VBA RGB pour opérer des réglages de couleur plus fin. Mais là encore, nous aurons l'occasion d'y revenir.

Sub mef()
'
' mef Macro
'
'
Selection.Font.Size = 14
Selection.Font.Bold = True
Selection.Font.ColorIndex = wdBlue
End Sub
  • Revenir sur le document Word et sélectionner un texte non formaté,
  • Puis, basculer de nouveau dans l'éditeur VBA en cliquant entre les bornes de la procédure mef,
  • Dès lors, enfoncer la touche F5 du clavier pour exécuter le code et revenir sur le document,
Ces techniques sont un peu inconfortables certes. Nous avons appris à créer des boutons de macros pour exécuter les procédures au clic. Mais ce n'est pas la vocation ici. Nous ne souhaitons pas conserver ces essais.

Changer la mise en forme du texte par une procédure de code VBA Word

Comme vous pouvez le voir, le texte sélectionné a parfaitement été formaté selon nos réglages et avec la couleur cette fois.

Il est possible d'optimiser ce petit code. Et dans cette phase de découverte, c'est ce à quoi nous proposons de procéder. Les trois instructions que nous exploitons utilisent à chaque reprise l'objet Selection avec sa propriété Font. Ces répétitions ne simplifient pas la lecture et la structure du code. Le VBA offre le bloc With. Nous l'avions démontré à l'occasion des formations VBA Excel. Il permet d'organiser le code sous une forme compactée pour énumérer tous les attributs attachés à un objet répété.
  • Revenir dans l'éditeur de code VBA Word,
  • Adapter le code de la procédure mef comme suit :
Sub mef()
'
' mef Macro
'
'
With Selection.Font
.Size = 14
.Bold = True
.ColorIndex = wdBlue
End With


End Sub


Il ne faut pas oublier les points qui précèdent les attributs dans l'énumération du bloc With. Et désormais, si vous exécutez cette procédure sur un texte présélectionné, vous obtenez exactement le même résultat. Mais le code est compact et plus structuré.

 
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