Exemples de Macros Word et Tutoriel VBA
In this Article
Bienvenue dans notre Méga-Guide VBA / Macros Word!
Cette page contient :
-
- Tutoriel Word VBA PDF (Téléchargement gratuit)
- Aide-mémoire VBA Word contenant une liste des extraits de code VBA Word les plus couramment utilisés
- Tutoriel VBA / Macro complet pour Word.
- 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!
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 à
Selection.Extend
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Signets
.Add Range:=Selection.Range, Name:= « Name »
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Selection.InsertAfter « Nouveau Texte »
ActiveDocument.Bookmarks.Add Range:=Selection.Range, _ Name:= « NomSignet »
Document
Set doc = Documents.Add
Colonnes
varNumberPages = ActiveDocument.Content.Information(wdActiveEndAdjustedPageNumber)
Police de caractères
Insérer
Selection.Range.InsertAutoText
Boucles
‘Faire quelque chose
Sub
For Each doc In Documents
‘Faire quelque chose
Next Doc
Dim i As Long, iParCount As Long
iParCompte = ActiveDocument.Paragraphs.Count
For i = 1 To iParCompte
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Next i
Paragraphe
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
End With
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.Count
For i = 1 To iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Next i
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
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