• 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

J'ai tout compris !

Mis à jour le 29/10/2019

TP : Créer ses propres macros et codes VBA

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Nous allons terminer cet ouvrage en définissant une macro qui assurera la mise en page complète d'un texte d'une dizaine de pages tiré des Fables de Jean de La Fontaine. Outre la définition de cette macro, et donc la mise en pratique du chapitre précédent, vous réviserez plusieurs techniques qui vous ont été révélées tout au long du livre.

Alors, impatients de tester tout ce que vous avez appris ? Ne tardons pas, commençons !

Instructions pour réaliser le TP

La mise en forme automatique de documents, vous en rêviez ? Ce livre vous montre comment y arriver ! Là, je crois que j'en fais un peu trop. Quoi que… Imaginez qu'il soit possible de mettre en forme la totalité d'un document en cliquant sur une icône. C'est ce que nous allons réaliser dans ce chapitre.

Afin de vous montrer de quoi je parle exactement, je vous conseille de comparer la figure suivante, qui représente le document à mettre en page, avec la figure suivante qui représente le document une fois mis en page. Avouez quand même que la différence saute aux yeux !

Extrait du document sans mise en page
Extrait du document sans mise en page
Extrait du document avec mise en page
Extrait du document avec mise en page

Arrivés à ce stade du livre, vous devriez être capables d'obtenir à peu près le même résultat que moi. Je ne vous demande pas un document identique, l'intérêt de ce TP n'est pas là. Le but est de modifier intégralement l'aspect d'un document en appuyant sur une seule et unique icône.

Vous aurez également besoin d'une image pour ajouter un filigrane au document. Vous pouvez trouver les fables ici

Je ne vous en dis pas plus, c'est à vous de jouer. Et si vous n'y arrivez pas, n'ayez aucune inquiétude : la correction arrive.

Correction

J'espère que tout s'est bien passé pour vous. Si vous avez éprouvé des difficultés sur un point particulier, n'hésitez pas à vous reporter à la section correspondante. Vous pouvez aussi choisir de lire la correction du début à la fin ou encore de refaire (ou de faire) la macro en suivant toutes les étapes expliquées dans la correction.

Après avoir ouvert le document, sélectionnez le premier paragraphe et cliquez sur l'icôneCouper(dans le groupePresse-papiers, sous l'ongletAccueildu Ruban). Ce texte vous servira dans la définition de l'en-tête. Basculez ensuite sur l'ongletDéveloppeur, cliquez surEnregistrer une macro, donnez lui un nom approprié (pour ma part j'ai choisiMise_en_page) et validez en cliquant surOK. Je suis sûr que vous avez tous pensé à le faire, mais un rappel ne fait jamais de mal !

Ajouter un en-tête

Basculez sur l'ongletInsertiondu Ruban, cliquez sur l'icôneEn-têtedans le groupeEn-tête et pied de pageet choisissezModifier l'en-tête. Appuyez sur les touches Ctrl + V pour insérer dans l'en-tête le contenu du presse-papiers, c'est-à-dire le titre
du document. Basculez sur l'ongletAccueilet cliquez sur l'icôneCentrerdans le groupeParagraphepour centrer l'en-tête sur la largeur du document. Cliquez enfin sur l'icôneFermer l'en-tête et le pied de pagedans le groupeFermer, sous l'ongletCréationdu Ruban. Vous devriez obtenir quelque chose de similaire à la figure suivante.

L'en-tête a été défini
L'en-tête a été défini

Changer lesTitre 2

Pour ce TP, j'ai changé lesTitre 2en caractèresArial Black,16 points,souligné double,centré, mais vous êtes libres de choisir une autre mise en forme.

Basculez sur l'ongletAccueildu Ruban. Cliquez sur l'icôneRemplacerdu groupeModification. Si la boîte de dialogueRechercher et remplacern'est pas déployée, cliquez surPlus. Dans l'angle inférieur gauche de la boîte de dialogue, cliquez surFormat, sélectionnezStyle, choisissezTitre 2et validez en cliquant surOK.
Cliquez dans le champRemplacer par. Cliquez surFormatpuis surPolice. Choisissez la policeArial Blacket la taille16. Choisissez un soulignement double dans la liste déroulanteSoulignementpuis validez en cliquant surOK.
Cliquez surFormatpuis surParagraphe. SélectionnezCentrédans la liste déroulanteAlignementpuis validez en cliquant surOK.
Si vous avez suivi nos consignes, la boîte de dialogueRechercher et remplacerdoit maintenant ressembler à la figure suivante.

La boîte de dialogue Rechercher et remplacer est prête pour le remplacement des styles Titre 2
La boîte de dialogue Rechercher et remplacer est prête pour le remplacement des styles Titre 2

Cliquez surRemplacer tout. Validez en cliquant surOKpuis refermez la boîte de dialogueRechercher et remplacer.

Remplacer le styleNormal

Pour ce TP, j'ai changé le styleNormalpar duArial Corps 13 Espace après 0

Cliquez sur l'icôneRemplacerdans le groupeModification, sous l'ongletAccueildu Ruban. Le point d'insertion clignote dans le champRechercher. Les réglages effectués à l'étape précédente étant toujours mémorisés, cliquez surSans attributpour les annuler. Cliquez surFormatpuis surStyle. Sélectionnez le styleNormalet validez en cliquant surOK.
Cliquez dans le champRemplacer par. Cliquez surSans attributpour effacer les réglages de l'étape précédente. Cliquez surFormatpuis surPolice. Choisissez la policeArial, taille13, puis validez en cliquant surOK. Cliquez surFormatpuis surParagraphe. Tapez0 ptdans le champAprèset validez en cliquant surOK. La boîte de dialogueRechercher et remplacerdoit maintenant ressembler à la figure suivante.

La boîte de dialogue Rechercher et remplacer est prête pour le remplacement des styles Normal
La boîte de dialogue Rechercher et remplacer est prête pour le remplacement des styles Normal

Cliquez surRemplacer toutpuis surOK; refermez alors la boîte de dialogueRechercher et remplacer.

Insérer un filigrane

Il vous faut basculer sur l'ongletMise en page, cliquez sur l'icôneFiligrane(groupeArrière-plan de page) et choisissezFiligrane personnalisé. Dans la boîte de dialogueFiligrane personnalisé, sélectionnezImage en filigraneet désignez votre image. Cliquez surOKpour valider, comme indiqué à la figure suivante.

Insertion du filigrane image
Insertion du filigrane image

Insérer une lettrine

Pour ce TP, j'ai ajouté une lettrine sur la première lettre qui suit chaqueTitre 2.

Basculez sur l'ongletAccueil. Dans le groupeModification, cliquez sur la flèche à droite de l'icôneRechercherpuis sélectionnezRecherche avancée. Cliquez surFormatpuis surStyle. ChoisissezTitre 2et validez en cliquant surOK. Cliquez surSuivantet refermez la boîte de dialogueRechercher et remplacer. Appuyez sur la flèche de droite de votre clavier pour passer après le saut de paragraphe de styleTitre 2. Maintenez enfoncée la touche Maj puis appuyez à nouveau sur la flèche de droite de votre clavier pour sélectionner le premier caractère.

Basculez sur l'ongletInsertiondu Ruban. Dans le groupeTexte, cliquez sur l'icôneLettrinepuis choisissezDans le texte, comme à la figure suivante.

Insertion d'une lettrine
Insertion d'une lettrine

Vous pouvez arrêter l'enregistrement de la macro. Basculez sur l'ongletDéveloppeuret cliquez sur l'icôneArrêter l'enregistrement.
Vous vous doutez que le travail n'est pas fini. Il faut maintenant intervenir dans le code VBA généré par l'enregistreur de macros pour répéter l'insertion d'une lettrine autant de fois que nécessaire.
Basculez sur l'ongletDéveloppeurdu Ruban, cliquez sur l'icôneMacrosdu groupeCode, sélectionnez la macroMise en pagepuis cliquez surModifier. Identifiez le dernier bloc d'instructions (celui qui est responsable de l'insertion de la lettrine) et modifiez le code pour obtenir ceci :

While (a <> 1)
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
If Not (Selection.Find.Found) Then
a = 1
Else
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.Paragraphs(1).DropCap
.Position = wdDropNormal
.FontName = "Arial"
.LinesToDrop = 3
.DistanceFromText = CentimetersToPoints(0)
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
End If
Wend
End Sub

Si les modifications ne vous sautent pas aux yeux, voici ce qui a changé :

  1. Une instructionWhilevient devant l'instructionWith Selection.Find.

  2. Le paramètre.Wrapa été initialisé àwdFindAsk.

  3. Trois lignes ont été ajoutées à la suite de l'instructionSelection.Find.Execute.

  4. Deux lignes ont été ajoutées avant leEnd Sub.

Encore quelques précisions : le dernier bloc d'instructions est exécuté tant que la variableaest différente de1. Étant donné qu'elle n'a pas été définie, elle n'a aucune valeur et, jusqu'à preuve du contraire, « rien » est toujours différent de1. La boucle peut donc s'exécuter au moins une fois.

À la suite de l'instructionSelection.Find.Execute, responsable de la recherche du paragraphe de styleTitre 2, l'instructionSelection.Find.Foundindique si un tel paragraphe a été trouvé. Dans le cas contraire (If Not (Selection.Find.Found)), la variable est initialisée à1(Then a=1) :

If Not (Selection.Find.Found) Then a = 1

Si un paragraphe de styleTitre 2est trouvé, la suite du code (Else) peut s'exécuter.

Les dernières instructions ajoutées ferment les instructionsIf(End If) etWhile(Wend).

Pour terminer, le paramètre.Wrapde l'instructionWith Selection.Findest initialisé àwdFindAskpour que le code prenne fin lorsque la totalité du document aura été décrite :

.Wrap = wdFindAsk

La touche finale

Pour rendre la macro facilement accessible, vous allez définir une icône dans la barre d'outilsAccès rapide. Cliquez sur l'icônePersonnaliser la barre d'outils Accès rapideet, dans le menu, sélectionnezAutres commandes. Dans la boîte de dialogueOptions Word, sélectionnezMacrosdans la première liste déroulante (1), choisissez la macroNormal.NewMacros.Mise_en_pagedans la première zone de liste (2) puis cliquez surAjouter(3). Cliquez surModifieret choisissez une des icônes proposées (4). Cliquez enfin surOKpour valider l'insertion de l'icône dans la barre d'outilsAccès rapide(5), comme indiqué à la figure suivante.

Définition d'une icône pour la macro dans la barre d'outils Accès rapide
Définition d'une icône pour la macro dans la barre d'outils Accès rapide

Si cela vous intéresse, je mets à votre disposition le code VBA de cette macro, même si vous ne devriez normalement pas en avoir besoin : il suffit de suivre mes indications pour y arriver. ;-)

'
' Mise_en_page Macro
'
'
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("Titre 2")
Selection.Find.Replacement.ClearFormatting
With Selection.Find.Replacement.Font
.Size = 16
.Underline = wdUnderlineDouble
End With
With Selection.Find.Replacement.ParagraphFormat
.SpaceBeforeAuto = False
.SpaceAfterAuto = False
.Alignment = wdAlignParagraphCenter
End With
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("Normal")
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Size = 13
With Selection.Find.Replacement.ParagraphFormat
.SpaceBeforeAuto = False
.SpaceAfter = 0
.SpaceAfterAuto = False
.LineUnitAfter = 0
End With
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.Sections(1).Range.Select
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes.AddPicture(FileName:= _
"C:\Data\jean-de-la-fontaine.jpg", LinkToFile:=False, SaveWithDocument:= _
True).Select
Selection.ShapeRange.Name = "WordPictureWatermark24773234"
Selection.ShapeRange.PictureFormat.Brightness = 0.85
Selection.ShapeRange.PictureFormat.Contrast = 0.15
Selection.ShapeRange.LockAspectRatio = True
Selection.ShapeRange.Height = CentimetersToPoints(17.01)
Selection.ShapeRange.Width = CentimetersToPoints(15.99)
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapNone
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.Left = wdShapeCenter
Selection.ShapeRange.Top = wdShapeCenter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("Titre 2")
While (a <> 1)
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
If Not (Selection.Find.Found) Then
a = 1
Else
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.Paragraphs(1).DropCap
.Position = wdDropNormal
.FontName = "Arial"
.LinesToDrop = 3
.DistanceFromText = CentimetersToPoints(0)
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
End If
Wend
End Sub

Nous voici arrivés au terme de ce tutoriel. Vous y avez certainement découvert plusieurs facettes cachées de votre traitement de texte. J'espère en particulier vous avoir convaincus que Word est un logiciel puissant, complet et vraiment abordable pour peu qu'on lui accorde un peu de temps. Auriez-vous pensé que vous pouviez supprimer l'arrière-plan d'une image, poster des articles dans votre blog ou encore insérer des captures d'écran sans quitter Word ?

Pour tirer pleinement parti de votre nouveau traitement de texte, je ne peux que vous encourager à l'utiliser aussi souvent que possible. La pratique, il n'y a que ça de vrai ! Bonne continuation et… à bientôt dans un nouveau tutoriel.

Exemple de certificat de réussite
Exemple de certificat de réussite