Exemples de Macros Word et Tutoriel VBA

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on janvier 12, 2022

Bienvenue dans notre Méga-Guide VBA / Macros Word!

Cette page contient :

    1. Tutoriel Word VBA PDF (Téléchargement gratuit)
    2. Aide-mémoire VBA Word contenant une liste des extraits de code VBA Word les plus couramment utilisés
    3. Tutoriel VBA / Macro complet pour Word.
    4. Liste consultable de tous nos didacticiels Word VBA / Macro

Vous pourriez également être intéressé par notre tutoriel VBA interactif pour Excel. Bien que certains des exemples/exercices soient spécifiques à Excel VBA, une grande partie du contenu est générique à la programmation VBA et vous pouvez trouver utile d’apprendre des concepts tels que les déclarations If, les boucles, les MessageBoxes, et plus encore.


VBA PDF (Téléchargements Gratuits)

Téléchargez gratuitement notre tutoriel VBA pour Microsoft Word! Ou des didacticiels VBA pour d’autres programmes Office!

word vba tutorial pdf

Télécharger


Exemples de VBA pour Word – Aide-Mémoire

Vous trouverez ci-dessous des exemples simples de code VBA pour travailler avec Microsoft Word.

Sélectionner / Aller à

Description
Code VBA
Retour arrière
Selection.TypeBackspace
Sélectionner le document entier
Selection.HomeKey Unit:=wdStory
Selection.Extend
Copier
Selection.Copy
Supprimer
Selection.Delete Unit:=wdCharacter, Count:=1
Insérer Après
Selection.InsertAfter « Texte »
Début de la ligne
Selection.HomeKey Unit:=wdLine
Fin de ligne
Selection.EndKey Unit:=wdLine
Coller
Selection.Paste
Tout sélectionner
Selection.WholeStory
Sélectionner toute la ligne
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Déplacer d’un paragraphe vers le haut
Selection.MoveUp Unit:=wdParagraph, Count:=1
Déplacer d’un caractère vers la droite
Selection.MoveRight Unit:=wdCharacter, Count:=1
Déplacement vers la droite d’une cellule du tableau
Selection.MoveRight Unit:=wdCell
Aller au début du document
Selection.HomeKey Unit:=wdStory
Aller à la fin du document
Selection.EndKey Unit:=wdStory
Aller à la page 1
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:= « 1 »
Aller en haut de la page
Selection.GoTo What:=wdGoToBookmark, Name:= « \Page »
Selection.MoveLeft Unit:=wdCharacter, Count:=1

Retourner en haut de la page

Signets

Description
Code VBA
Ajouter
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:= « Name »
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Compter
Dim n as Integer n = ActiveDocument.Bookmarks.Count
Supprimer
ActiveDocument.Bookmarks(« NomDuSignet »).Delete
Existe-t-il ?
If ActiveDocument.Bookmarks.Exists(« NomDuSignet ») = True Then
‘Faire quelque chose
End If
Aller à
Selection.GoTo What:=wdGoToBookmark, Name:= « NomDuSignet »
Sélectionnez
ActiveDocument.Bookmarks(« NomDuSignet »).Select
Remplacer le texte
Selection.GoTo What:=wdGoToBookmark, Name:= « NomDuSignet » Selection.Delete Unit:=wdCharacter, Count:=1
Selection.InsertAfter « Nouveau Texte »
ActiveDocument.Bookmarks.Add Range:=Selection.Range, _ Name:= « NomSignet »

Retour en haut

Document

Description
Code VBA
Activer
Documents(« Exemple.doc »).Activate
Ajouter à une variable
Dim doc As Document
Set doc = Documents.Add
Ajouter
Documents.Add
Ajouter (À partir d’un autre document)
Documents.Add Template:= »C:\Formulaires\FormDoc.doc », _ NewTemplate:=False
Fermer
Documents(« Exemple.doc »).Close
Fermer – Enregistrer les modifications
Documents(« Exemple.doc »).Close SaveChanges:=wdSaveChanges
Fermer – Ne pas sauvegarder
Documents(« Exemple.doc »).Close SaveChanges:=wdDoNotSaveChanges
Fermer – Inviter à sauvegarder
Documents(« Exemple.doc »).Close SaveChanges:=wdPromptToSaveChanges

Retourner en haut de page

Colonnes

Description
Code VBA
Enregistrer sous
Documents(« Exemple.doc »).SaveAs (« C:\Exemples\Exemple.doc »)
Enregistrer
Documents(« Exemple.doc »).Save
Protéger
Documents(« Exemple.doc »).Protect Password:= « Mot de passe »
Déprotéger
Documents(« Exemple.doc »).UnProtect Password:= « Mot de passe »
Nombre de pages
Dim varNumberPages as Variant
varNumberPages = ActiveDocument.Content.Information(wdActiveEndAdjustedPageNumber)
Imprimer
Documents(« Exemple.doc »).Print

Retour au début

Police de caractères

Description
Code VBA
Taille
Selection.Font.Size = 12
Gras
Selection.Font.Bold = True
Italique
Selection.Font.Italic = True
Souligné
Selection.Font.Underline = wdUnderlineSingle
Mettre le texte en majuscules
Selection.Font.AllCaps = True
Couleur
Selection.Font.TextColor = vbRed
Nom
Selection.Font.Name = « Abadi »
Indice
Selection.Font.Subscript = True
Exposant
Selection.Font.Superscript = True
Couleur de surbrillance
Selection.Range.HighlightColorIndex = wdYellow
Style
Selection.Style = ActiveDocument.Styles(« Normal »)

Retourner en haut

Insérer

Description
Code VBA
Insertion d’un texte automatique
Selection.TypeText Text:= « a3 »
Selection.Range.InsertAutoText
Insérer un code de date
Insérer un fichier
Selection.InsertFile (« C:\Docs\Document.doc »)
Insérer un saut de page
Selection.InsertBreak Type:=wdPageBreak
Insérer un symbole de paragraphe
Selection.TypeText Text:=Chr$(182)
Insérer une tabulation
Selection.TypeText Text:=vbTab
Insérer un texte
Selection.TypeText Text:= « Texte à Insérer »
Insérer un Paragraphe Vide
Sélection.TypeParagraphe
Insérer un paragraphe
Selection.InsertParagraph

Retourner en haut

Boucles

Description
Code VBA
Itérer jusqu’à la fin du document
Do Until ActiveDocument.Bookmarks(« \Sel ») = ActiveDocument.Bookmarks(« \EndOfDoc »)
‘Faire quelque chose
Sub
Boucle sur chaque document dans l’objet Documents
Dim doc As Document
For Each doc In Documents
‘Faire quelque chose
Next Doc
Boucle dans les paragraphes
Sub through Paragraphs
Dim i As Long, iParCount As Long
iParCompte = ActiveDocument.Paragraphs.Count
For i = 1 To iParCompte
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Next i

Retourner en haut

Paragraphe

Description
Code VBA
Garder les lignes ensemble
Selection.ParagraphFormat.KeepTogether = True
Garder avec le prochain
Selection.ParagraphFormat.KeepWithNext= True
Espace après
Selection.ParagraphFormat.SpaceAfter = 12
Espace avant
Selection.ParagraphFormat.SpaceBefore = 0
Aligner au centre
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Aligner à droite
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Aligner à gauche
Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
Retrait gauche
Selection.ParagraphFormat.LeftIndent = InchesToPoints(3.75)
Retrait droit
Selection.ParagraphFormat.RightIndent = InchesToPoints(1)
Espacement des lignes
With Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
End With
Boucle sur tous les paragraphes
Sub through Paragraphs
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.Count
For i = 1 To iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Next i

Retourner en haut

Tutoriel sur les Macros VBA de Word

Il s’agit d’un tutoriel sur l’utilisation de VBA avec Microsoft Word. Ce tutoriel vous apprendra à écrire une macro simple et à interagir avec les documents, les plages, les sélections et les paragraphes.

Remarque : si vous êtes novice en matière de macros et de VBA, cet article pourrait vous être utile : Comment écrire ses propres macros VBA.

VBA est le langage de programmation utilisé pour automatiser les programmes Microsoft Office, notamment Word, Excel, Outlook, PowerPoint et Access.

Les Macros sont des blocs de code VBA qui effectuent des tâches spécifiques.

Lorsque vous Enregistrer une macro Word écrit le code VBA dans une macro, ce qui vous permet de répéter vos actions. Vous pouvez voir une liste de toutes les macros disponibles dans Affichage > Macros.

Après avoir enregistré une macro, vous pourrez la modifier à partir de la liste des macros :

Lorsque vous cliquez sur Modifier, vous ouvrez l’éditeur VBA. En utilisant l’éditeur VBA, vous pouvez modifier les macros enregistrées ou écrire votre propre macro Word à partir de zéro. Pour accéder à l’éditeur VBA, utilisez le raccourci ALT + F11 ou cliquez sur Visual Basic dans le ruban Développeur.

Exemple Simple de Macro Word

Voici un exemple simple de macro VBA pour Word. Elle exécute les tâches suivantes :

  • Ouvre un document Word
  • Écriture dans le document
  • Ferme et enregistre le document Word.
Sub ExempleMacroWord()

    'Ouverture du document et affectation à la variable
    Dim oDoc As Document
    Set oDoc = Documents.Open("c:\Users\Public\NouveauDocument.docx")
    
    'Écriture dans le document
    Selection.TypeText "www.automateexcel.com"
    Selection.TypeParagraph
    
    'Enregistrer et fermer le document
    oDoc.Save
    oDoc.Close
    
End Sub

Principes de Base des Macros Word

Tout le code VBA doit être stocké dans des procédures comme celle-ci. Pour créer une procédure en VBA, tapez « Sub ExempleMacroWord » (où « ExempleMacroWord » est le nom de votre macro) et appuyez sur ENTRÉE. VBA ajoute automatiquement les parenthèses et End Sub.

Objet Document Word

Lorsque vous interagissez avec Microsoft Word en VBA, vous ferez souvent référence à des « objets » Word. Les objets les plus courants sont :

Objet Application – Microsoft Word lui-même

Objet Document – Un document Word

Objet Range – Une partie d’un document Word

Objet Selection – Une plage sélectionnée ou l’emplacement du curseur.

Application

L’application est l’objet de « premier niveau ». Tous les autres objets de Word peuvent être atteints par celui.

Outre l’accès aux autres objets de Word, il est possible d’appliquer des paramètres « au niveau de l’application » :

Application.Options.AllowDragAndDrop = True

Voici un exemple d’accès à la « Sélection » de « Windows(1) » dans l’application :

Application.Windows(1).Selection.Characters.Count

Cependant, il est possible d’accéder directement aux objets Word les plus courants, sans avoir à saisir la hiérarchie complète. Ainsi, au lieu de cela, vous pouvez (et devriez) simplement taper :

Selection.Characters.Count

Documents

ActiveDocument

Souvent, vous aurez deux ou plusieurs documents ouverts dans Word et vous devrez spécifier avec quel document Word interagir. Une façon de spécifier le document est d’utiliser ActiveDocument. Par exemple

ActiveDocument.PrintOut

…imprimera le document actif. L’objet ActiveDocument est le document de Word qui « a le focus ».

Pour changer l’ActiveDocument, utilisez la commande Activate :

Documents("Exemple.docx").Activate

ThisDocument

Au lieu d’utiliser ActiveDocument pour référencer le document actif, vous pouvez utiliser ThisDocument pour référencer le document dans lequel la macro est stockée. ThisDocument ne changera jamais.

ThisDocument.PrintOut

Variables de Document

Cependant, pour les macros plus complexes, il peut être difficile de garder la trace du document actif. Il peut également être frustrant de passer d’un document à l’autre.

Au lieu de cela, vous pouvez utiliser des variables de document.

Cette macro attribue le document actif à une variable, puis imprime le document à l’aide de celle-ci :

Sub ExempleVariable()
    Dim oDoc As Document
    Set oDoc = ActiveDocument
    oDoc.PrintOut
End Sub

Méthodes des Objets Document

Ouvrir un Document

Pour ouvrir un document Word :

Documents.Open "c:\Utilisateurs\Nom Utilisateur\Bureau\Test PM.docx"

Nous recommandons de toujours attribuer un document à une variable lors de son ouverture :

Dim oDoc as Document
Set oDoc = Documents.Open("c:\Utilisateurs\Nom Utilisateur\Bureau\Test PM.docx")

Créer un Nouveau Document

Pour créer un nouveau document Word :

Documents.Add

Nous pouvons demander à Word de créer un nouveau document basé sur un modèle :

Documents.Add Template:="C:\Program Files\Microsoft Office\Templates\MonModèle.dotx"

Comme toujours, il est utile et très pratique d’affecter le document à une variable lors de sa création ou de son ouverture :

Dim oDoc as Document
Set oDoc = Documents.Add (Template:="C:\Program Files\Microsoft Office\Templates\MonModèle.dotx")

Sauvegarder le Document

Pour enregistrer un document :

ActiveDocument.Save

ou SaveAs :

ActiveDocument.SaveAs FileName:= c:\Utilisateurs\Nom Utilisateur\Bureau\test2.docx", FileFormat:=wdFormatDocument

Fermer le Document

Pour fermer un document et enregistrer les modifications :

ActiveDocument.Close wdSaveChanges

ou sans enregistrer les modifications :

ActiveDocument.Close wdDoNotSaveChanges

Imprimer le Document

Ceci imprimera le document actif :

ActiveDocument.PrintOut

Plage, Sélection, Paragraphes

Range et Selection sont probablement les objets les plus importants de Word VBA, certainement les plus utilisés.

Range fait référence à une partie du document, généralement, mais pas nécessairement, du texte.

Selection fait référence au texte sélectionné (ou à d’autres objets tels que des images) ou, si rien n’est sélectionné, à un point d’insertion.

Paragraphs représente les paragraphes du document. C’est moins important qu’il n’y paraît, car vous ne pouvez pas accéder directement au texte du paragraphe (vous devez accéder à une plage de paragraphes particulière pour effectuer des modifications).

Range

La plage peut être n’importe quelle partie du document, y compris le document entier :

Dim oRange As Range
Set oRange = ActiveDocument.Content

ou elle peut être aussi petite qu’un caractère. Un autre exemple, cette plage se réfère au premier mot du document :

Dim oRange As Range
Set oRange = ActiveDocument.Range.Words(1)

En général, vous souhaitez obtenir une plage qui fait référence à une partie spécifique du document, puis la modifier. Dans l’exemple suivant, nous allons mettre en gras le premier mot du deuxième paragraphe :

Dim oRange As Range
Set oRange = ActiveDocument.Paragraphs(2).Range.Words(1)
oRange.Bold = True

Définition du Texte d’une Plage

Pour définir la valeur du texte d’une plage :

Dim oRange As Range
Set oRange = ActiveDocument.Paragraphs(2).Range.Words(1)
oRange.Text = "Bonjour "

(Conseil : notez l’espace après « Bonjour ». Parce que l’objet Word (mot) inclut l’espace après le mot, avec seulement « Bonjour », nous obtiendrions « Bonjourmot suivant »)

Il y a des centaines de choses que vous pouvez faire avec les plages. Voici quelques exemples (ceux-ci supposent que vous avez déjà fait une variable objet oRange se référant à l’intervalle qui vous intéresse) :

Changer la Police

oRange.Font.Name = "Arial"

Afficher dans une Boîte de Message le Nombre de Caractères dans une Plage Particulière

MsgBox oRange.Characters.Count

Insérer du Texte Avant la Plage

oRange.InsertBefore "Ceci est le texte inséré"

Ajouter une Note de Bas de Page à la Plage

ActiveDocument.Footnotes.Add Range:=oRange, _
Text:= "Pour en savoir plus, consultez le site automateexcel.com"

Copiez-la dans le Presse-Papiers

oRange.Copy
'Souvent, vous avez besoin de changer la référence d'une plage particulière. Ainsi, vous pouvez spécifier le début et la fin de la plage
oRange.Start = 5
oRange.End = 50

Après le code ci-dessus, oRange fera référence au texte commençant par le cinquième et se terminant par le 50ème caractère du document.

Selection

L’Objet Selection est encore plus utilisée que l’objet Range, car il est plus facile de travailler avec les sélections qu‘avec les plages, SI votre macro interagit UNIQUEMENT avec le document actif.

Sélectionnez d’abord la partie souhaitée de votre document. Par exemple, sélectionnez le deuxième paragraphe du document actif :

ActiveDocument.Paragraphs(2).Range.Select

Ensuite vous pouvez utiliser l’objet de sélection pour taper du texte :

Selection.TypeText "Du Texte"

Nous pouvons taper quelques paragraphes en dessous de « Du Texte » :

Selection.TypeText "Du Texte"
Selection.TypeParagraphe

Souvent, il est nécessaire de savoir si un texte est sélectionné ou si nous avons juste un point d’insertion :

Si Selection.Type <> wdSelectionIP Then
    Selection.Font.Bold = True
Else
    MsgBox "Vous devez sélectionner du texte"
End If

Lorsque l’on travaille avec l’objet Selection, on veut placer le point d’insertion à un endroit particulier, et émettre des commandes à partir de ce point.

Début du document :

Selection.HomeKey Unit:=wdStory, Extend:=wdMove

Début de la ligne en cours :

Selection.HomeKey Unit:=wdLine, Extend:=wdMove

Le paramètre Extend wdMove déplace le point d’insertion. A la place, vous pouvez utiliser wdExtend qui sélectionnera tout le texte entre le point d’insertion actuel.

Selection.HomeKey Unit:=wdLine, Extend:=wdExtend

Déplacer la sélection

La méthode la plus utile pour changer la position du point d’insertion est le déplacement. Pour déplacer la sélection de deux caractères vers l’avant :

Selection.Move Unit:=wdCharacter, Count:=2

pour la déplacer vers l’arrière, utilisez un nombre négatif pour le paramètre Count :

Selection.Move Unit:=wdCharacter, Count:=-2

Le paramètre Unit peut être wdCharacter, wdWord, wdLine, ou plus (utilisez l’aide VBA de Word pour en savoir plus).

Pour déplacer des mots à la place :

Selection.Move unit:=wdWord, Count:=2

Il est plus facile de travailler avec la sélection (par rapport aux plages) car elle est comme un robot qui utilise Word, imitant l’utilisateur humain. Là où se trouve le point d’insertion, une action est effectuée. Mais, cela signifie que vous devez faire attention à l’endroit où se trouve le point d’insertion! Ce n’est pas facile après de nombreuses étapes dans le code. Sinon, Word modifierait le texte à un endroit non souhaité.

 

Dans le cas où vous avez besoin d’une propriété ou d’une méthode qui n’est pas disponible dans l’objet Selection, vous pouvez toujours obtenir facilement la plage associée à la sélection :

Set oRange = Selection.Range

ASTUCE : L utilisation de la sélection est souvent plus facile que l’utilisation des plages, mais elle est aussi beaucoup plus lente (important lorsque vous traitez de gros documents)

Paragraphes

Vous ne pouvez pas utiliser directement l’objet Paragraphs pour modifier le texte :

ActiveDocument.Paragraphs(1).Text = "Non, cela ne fonctionnerait pas"

Ce qui précède ne fonctionnerait pas (en fait, il y aurait une erreur). Vous devez d’abord obtenir la plage associée à un paragraphe particulier :

ActiveDocument.Paragraphs(1).Range.Text = "Ca marche maintenant :)"

Mais vous pouvez directement changer son style :

ActiveDocument.Paragraphs(1).Style = "Normal"

ou changer son formatage au niveau du paragraphe :

ActiveDocument.Paragraphs(1).LeftIndent = 10

ou peut-être voulez-vous que ce paragraphe reste sur la même ligne que le paragraphe suivant :

ActiveDocument.Paragraphs(1).KeepWithNext = True

Centrer le paragraphe :

ActiveDocument.Paragraphs(1).Alignment = wdAlignParagraphCenter

Il est TRÈS utile d’affecter un paragraphe particulier à une variable objet. Si nous assignons un paragraphe particulier à une variable, nous n’avons pas à nous inquiéter si le premier paragraphe devient le second parce que nous avons inséré un paragraphe avant lui :

dim oPara as Paragraph
Set oPara = Selection.Paragraphs(1) 'ici nous assignons le premier paragraphe de la sélection actuelle à la variable

Voici un exemple où nous insérons un paragraphe au-dessus du premier paragraphe, mais nous pouvons toujours faire référence à l’ancien premier paragraphe parce qu’il a été affecté à une variable :

Sub ExempleParagraphe()
    Dim oPara As Paragraph
    Set oPara = ActiveDocument.Paragraphs(1)
    MsgBox oPara.Range.Text
    oPara.Range.InsertParagraphBefore 'Insérer un paragraphe
    MsgBox oPara.Range.Text
End Sub

L’objet Paragraphe est très fréquemment utilisé dans les boucles :

Sub BoucleSurLesParagraphes()

    Dim oPara As Paragraph
    For Each oPara In ActiveDocument.Paragraphs
        'Faites quelque chose avec cet objet. Nous allons simplement afficher
        'le texte du paragraphe si son style est "Heading 4"
        If oPara.Style = "Heading 4" Then
            MsgBox oPara.Range.Text
        End If
    Next oPara

End Sub

Conclusion du tutoriel Word VBA

Ce tutoriel a abordé les bases du VBA de Word. Si vous êtes novice en VBA, vous devriez également consulter notre tutoriel général sur le VBA pour en savoir plus sur les variables, les boucles, les boîtes à message, les paramètres, la logique conditionnelle et bien plus encore.

Exemples de macros Word

Exemple de Macros Word
Modèles
Ajouter des Nouveaux Documents
Compter les Mots dans la Sélection
Boîtes de Texte
Enregistrer Sous PDF
Signets
Tableaux
Rechercher et Rechercher et Remplacer
Ouvrir des Documents

FAQ sur le VBA dans Word

Qu’est-ce qu’une macro Word ?

Une macro est un terme général qui désigne un ensemble d’instructions de programmation permettant d’automatiser des tâches. Les macros Word automatisent des tâches dans Word à l’aide du langage de programmation VBA.

Word dispose-t-il du langage VBA ?

Oui, Microsoft Word dispose de l’éditeur VBA. Vous pouvez y accéder en appuyant sur ALT + F11 ou en naviguant vers Développeur > Visual Basic.

Comment utiliser VBA dans Word ?

1. Ouvrir l’éditeur VBA (ALT + F11 ou Développeur > Visual Basic)
2. Allez dans Insertion > Module pour créer un module de code
3. Tapez ‘Sub HelloWorld’ et appuyez sur Entrée
4. Entre les lignes ‘Sub HelloWorld’ et ‘End Sub’, tapez ‘MsgBox « Hello World ! »
5. Vous avez créé une macro !
6. Maintenant, appuyez sur ‘F5’ pour exécuter la macro

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA