Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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,
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.
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.
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,
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,
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.
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é.