Exemples de macros Word et didacticiel VBA

Bienvenue dans notre méga-guide Word VBA / Macros !

Cette page contient :

    1. Tutoriel Word VBA PDF (téléchargement gratuit)
    2. Word VBA "Cheat Sheet" contenant une liste des extraits de code Word VBA les plus couramment utilisés
    3. Tutoriel Word VBA / Macro complet.
    4. Liste consultable de tous nos didacticiels sur les macros Word VBA

Vous pourriez également être intéressé par notre didacticiel interactif VBA pour Excel. Bien que certains exemples/exercices soient spécifiques à Excel VBA, une grande partie du contenu est générique pour tous les VBA et vous trouverez peut-être utile d'apprendre des concepts tels que les instructions If, les boucles, les boîtes de message, etc.

PDF VBA (téléchargements gratuits)

Téléchargez notre didacticiel gratuit Microsoft Word VBA ! Ou des didacticiels VBA pour d'autres programmes Office !

Télécharger

Exemples Word VBA "Cheat Sheet"

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

Sélectionner/Aller à

La descriptionCode VBARetour arrièreSelection.TypeBackspaceSélectionnez le document entierUnité Selection.HomeKey :=wdStory
Sélection.ÉtendreCopieSélection.CopieEffacerSelection.Delete Unit:=wdCharacter, Count:=1Insérer aprèsSelection.InsertAfter "texte"Début de ligneSelection.HomeKey Unité :=wdLineFin de ligneUnité Selection.EndKey :=wdLinePâteSélection.CollerTout sélectionnerSelection.WholeStorySélectionnez toute la ligneSelection.EndKey Unité :=wdLine, Extend :=wdExtendMonter le paragrapheSelection.MoveUp Unit:=wdParagraph, Count:=1Déplacer vers la droite d'un caractèreSelection.MoveRight Unit:=wdCharacter, Count:=1Déplacer vers la droite d'une cellule dans le tableauUnité Selection.MoveRight :=wdCellAller au début du documentUnité Selection.HomeKey :=wdStoryAller à la fin du documentUnité Selection.EndKey :=wdStoryAller à la page 1Selection.GoTo Quoi :=wdGoToPage, Which :=wdGoToNext, Name :=”1″Aller en haut de la pageSelection.GoTo Quoi :=wdGoToBookmark, Nom :=”\Page”
Selection.MoveLeft Unit:=wdCharacter, Count:=1

retourner en haut

Signets

La descriptionCode VBAAjouterAvec ActiveDocument.Bookmarks
.Ajouter une plage : =Sélection.Plage, Nom : = » Nom »
.DefaultSorting = wdSortByName
.ShowHidden = False
Terminer parCompterDim n comme entier
n = ActiveDocument.Bookmarks.CountEffacerActiveDocument.Bookmarks(“BookmarkName”).SupprimerExiste ?Si ActiveDocument.Bookmarks.Exists("BookmarkName") = True alors
'Faire quelque chose
Fin siAller àSelection.GoTo What:=wdGoToBookmark, Name:="Nom du signet"SélectionnerActiveDocument.Bookmarks(“BookmarkName”).SelectRemplacer le texteSelection.GoTo What:=wdGoToBookmark, Name:="Nom du signet"
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.InsertAprès "Nouveau texte"
ActiveDocument.Bookmarks.Add Range :=Selection.Range, _
Nom : ="Nom du signet"

retourner en haut

Document

La descriptionCode VBAActiverDocuments(“Exemple.doc”).ActiverAjouter à la variableDim doc en tant que document
Définir doc = Documents.AjouterAjouterDocuments.AjouterAjouter (à partir d'un autre document)Documents.Ajouter un modèle :=”C:\Forms\FormDoc.doc”, _
Nouveau modèle : = FalseprocheDocuments(“Exemple.doc”).FermerFermer - Enregistrer les modificationsDocuments(“Example.doc”).Fermer SaveChanges:=wdSaveChangesFermer - Ne pas enregistrerDocuments("Example.doc").Fermer SaveChanges:=wdDoNotSaveChangesFermer - Inviter à enregistrerDocuments(“Example.doc”).Fermer SaveChanges:=wdPromptToSaveChanges

retourner en haut

Colonnes

La descriptionCode VBAEnregistrer sousDocuments ("Example.doc").Enregistrer sous ("C:\Example\Example.doc")sauvegarderDocuments(“Exemple.doc”).EnregistrerProtégerDocuments ("Example.doc").Protect Password :="mot de passe"DéprotégerDocuments ("Example.doc").UnProtect Password :="mot de passe"Nombre de pagesDim varNumberPages en tant que variante
varNumberPages = _
ActiveDocument.Content.Information(wdActiveEndAdjustedPageNumber)ImprimerDocuments(“Exemple.doc”).Imprimer

retourner en haut

Fatigué de rechercher des exemples de code VBA ? Essayez AutoMacro !

Police de caractère

La descriptionCode VBATailleSelection.Font.Size = 12GrasSelection.Font.Bold = TrueItaliqueSelection.Font.Italic = TrueSoulignerSelection.Font.Underline = wdUnderlineSingleToutes en majusculesSelection.Font.AllCaps = TrueCouleurSelection.Font.TextColor = vbRedNomSelection.Font.Name = "Abadi"IndiceSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueCouleur de surbrillanceSelection.Range.HighlightColorIndex = wdYellowStyleSelection.Style = ActiveDocument.Styles ("Normal")

retourner en haut

Insérer

La descriptionCode VBAInsérer une insertion automatiqueSelection.TypeText Text : = ”a3″
Selection.Range.InsertAutoTextInsérer le code de dateInsérer un fichierSelection.InsertFile ("C:\Docs\Something.doc")Insérer un saut de pageSelection.InsertBreak Type:=wdPageBreakInsérer un symbole de paragrapheSelection.TypeText Text:=Chr$(182)Insérer un ongletSelection.TypeText Text:=vbTabInsérer du texteSelection.TypeText Text : = "Tout texte"Insérer un paragraphe de typeSelection.TypeParagraphInsérer un paragrapheSelection.InsertParagraph

retourner en haut

Boucles

La descriptionCode VBAFaire jusqu'à la fin du documentFaire jusqu'à ActiveDocument.Bookmarks(“\Sel”) = ActiveDocument.Bookmarks(“\EndOfDoc”)
'Faire quelque chose
SousPour chaque document dans DocsDim doc en tant que document
Pour chaque document dans les documents
'Faire quelque chose
Document suivantBoucler les paragraphesSub à travers les paragraphes
Dim i aussi long, iParCount aussi long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 à iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Ensuite je

retourner en haut

Paragraphe

La descriptionCode VBAGarder les lignes ensembleSelection.ParagraphFormat.KeepTogether = TrueConserverAvecSuivantSelection.ParagraphFormat.KeepWithNext = TrueEspace aprèsSelection.ParagraphFormat.SpaceAfter = 12Espace avantSelection.ParagraphFormat.SpaceBefore = 0Aligner au centreSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterAligner à droiteSelection.ParagraphFormat.Alignment = wdAlignParagraphRightAlignez à gaucheSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftRetrait à gaucheSelection.ParagraphFormat.LeftIndent = InchesToPoints(3.75)Retrait à droiteSelection.ParagraphFormat.RightIndent = PoucesVersPoints(1)InterligneAvec Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Terminer parParcourir tous les paragraphesSub à travers les paragraphes
Dim i aussi long, iParCount aussi long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 à iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Ensuite je

retourner en haut

Tutoriel sur les macros Word VBA

Ceci est un tutoriel pour utiliser VBA avec Microsoft Word. Ce didacticiel vous apprendra à écrire une macro simple et à interagir avec des documents, des plages, des sélections et des paragraphes.

Remarque : si vous débutez avec les macros/VBA, vous pourriez également trouver cet article utile : Comment écrire des macros VBA à partir de zéro.

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

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

Lorsque vous Enregistrer une macro, Word écrira le code VBA dans une macro, vous permettant de répéter vos actions. Vous pouvez voir une liste de toutes les macros disponibles à partir de Affichage > Macros.

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

Lorsque vous cliquez Éditer, vous ouvrez le Éditeur VBA. En utilisant l'éditeur VBA, vous pouvez éditer des macros enregistrées ou écrire une macro Word à partir de zéro. Pour accéder à l'éditeur VBA utilisez le raccourci ALT + F11 ou cliquez Visual Basic du Ruban développeur.

Exemple de macro de mot simple

Ceci est un exemple simple d'une macro Word VBA. Il effectue les tâches suivantes :

  • Ouvre un document Word
  • Écrit pour documenter
  • Ferme et enregistre le document Word.
123456789101112131415 Sous WordMacroExample()'Ouvrir le document et affecter à la variableDim oDoc en tant que documentDéfinir oDoc = Documents.Open("c:\Users\someone\NewDocument.docx")'Écrire au documentSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph'Enregistrer et fermer le documentoDoc.EnregistreroDoc.FermerFin du sous-marin

Notions de base sur les 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 WordMacroExample » (où « WordMacroExample » est le nom de votre macro souhaitée) et appuyez sur ENTRER. VBA ajoutera automatiquement la parenthèse et End Sub.

Objet de document Word

Lorsque vous interagissez avec Microsoft Word dans VBA, vous ferez fréquemment référence à Word « Objets ». Les objets les plus courants sont :

Objet d'application - Microsoft Word lui-même

Objet de document - Un document Word

Objet de plage - Une partie d'un document Word

Objet de sélection - Une plage sélectionnée ou un emplacement de curseur.

Application

L'application est l'objet de « premier niveau ». Tous les autres objets de Word peuvent être atteints via celui-ci.

En plus d'accéder à d'autres objets Word, il existe des paramètres "au niveau de l'application" qui peuvent être appliqués :

1 Application.Options.AllowDragAndDrop = True

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

1 Application.Windows(1).Sélection.Nombre.de.caractères

Cependant, les objets Word les plus courants sont accessibles directement, sans saisir la hiérarchie complète. Au lieu de cela, vous pouvez (et devriez) simplement taper :

1 Nombre.de.caractères.de.sélection

Documents

ActifDocument

Souvent, vous aurez deux ou plusieurs documents ouverts dans Word et vous devrez spécifier avec quel document Word spécifique interagir. Une façon de spécifier quel document doit être utilisé ActifDocument. Par exemple:

1 ActiveDocument.PrintOut

… imprimerait l'ActiveDocument. L'ActiveDocument est le document dans Word qui "a le focus"

Pour changer d'ActiveDocument, utilisez la commande Activer :

1 Documents("Exemple.docx").Activer

Ce document

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. Ce document ne changera jamais.

1 CeDocument.Imprimer

Variables du document

Cependant, pour les macros plus complexes, il peut être difficile de suivre le 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 affectera l'ActiveDocument à une variable, puis imprimera le document à l'aide de la variable :

12345 Sous VarExample()Dim oDoc en tant que documentDéfinir oDoc = Document ActifoDoc.PrintOutFin du sous-marin

Méthodes de documentation

Ouvrir le document

Pour ouvrir un document Word :

1 Documents.Ouvrir "c:\Users\SomeOne\Desktop\Test PM.docx"

Nous vous recommandons de toujours affecter un Document à une variable lors de son ouverture :

12 Dim oDoc en tant que documentDéfinir oDoc = Documents.Open("c:\Users\SomeOne\Desktop\Test PM.docx")

Créer un nouveau document

Pour créer un nouveau document Word :

1 Documents.Ajouter

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

1 Documents.Add Template:="C:\Program Files\Microsoft Office\Templates\MyTemplate.dotx"

Comme toujours, il est utile et économiseur de problèmes énorme d'attribuer un document à une variable lors de la création ou de l'ouverture :

12 Dim oDoc en tant que documentDéfinir oDoc = Documents.Add (Template:="C:\Program Files\Microsoft Office\Templates\MyTemplate.dotx")

Enregistrer le document

Pour enregistrer un document :

1 ActifDocument.Enregistrer

ou Enregistrer sous :

1 ActiveDocument.SaveAs FileName:= c:\Users\SomeOne\Desktop\test2.docx", FileFormat:=wdFormatDocument

Fermer le document

Pour fermer un document et enregistrer les modifications :

1 ActiveDocument.Close wdSaveChanges

ou sans enregistrer les modifications :

1 ActiveDocument.Close wdDoNotSaveChanges

Imprimer le document

Cela imprimera le document actif :

1 ActiveDocument.PrintOut

Plage, sélection, paragraphes

Varier et Sélection sont probablement les objets les plus importants dans Word VBA, certainement les plus utilisés.

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

Sélection fait référence au texte sélectionné (ou à un autre objet comme des images) ou, si rien n'est sélectionné, à un point d'insertion.

Paragraphes représenter des paragraphes dans un 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 apporter des modifications).

Varier

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

12 Dim orange As RangeDéfinir oRange = ActiveDocument.Content

ou il peut être petit comme un caractère.

Autre exemple, cette plage ferait référence au premier mot du document :

12 Dim orange As RangeDéfinir oRange = ActiveDocument.Range.Words(1)

Habituellement, vous souhaiterez 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 :

123 Dim orange As RangeDéfinir oRange = ActiveDocument.Paragraphs(2).Range.Words(1)oPlage.Bold = Vrai

Définir le texte de la plage

Pour définir la valeur de texte d'une plage :

123 Dim orange As RangeDéfinir oRange = ActiveDocument.Paragraphs(2).Range.Words(1)oRange.Text = « Bonjour »

(Astuce : Notez l'espace après « Bonjour ». Parce que l'objet mot inclut un espace après le mot, avec juste « bonjour », nous obtiendrions « Mot Hellonext »)

Il y a des centaines de choses que vous pouvez faire avec les gammes. Juste quelques exemples (ceux-ci supposent que vous êtes déjà fait variable objet Orange se référant à la plage d'intérêt):

Changer la police

1 oRange.Font.Name = "Arial"

Afficher dans la boîte de message le nombre de caractères dans une plage particulière

1 MsgBox ouRange.Characters.Count

Insérer du texte avant

1 oRange.InsertBefore "ceci est du texte inséré "

Ajouter une note de bas de page à la plage

12 ActiveDocument.Footnotes.Add Range :=oRange, _Text:="En savoir plus sur easyexcel.net."

Copiez-le dans le presse-papiers

1234 oPlage.CopierSouvent, vous devez modifier ce qui fait référence à une plage particulière. Donc tu peux commencer, c'est le début et la finoPlage.Début = 5oPlage.Fin = 50

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

Sélection

Sélection est encore plus utilisé que Varier, car il est plus facile de travailler avec Sélections que Gammes, SI votre macro interagit UNIQUEMENT avec l'ActiveDocument.

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

1 ActiveDocument.Paragraphs(2).Range.Select

Ensuite, vous pouvez utiliser l'objet de sélection pour saisir du texte :

1 Selection.TypeText "Du texte"

Nous pouvons taper quelques paragraphes ci-dessous « Du texte » :

12 Selection.TypeText "Du texte"Selection.TypeParagraph

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

12345 Si Selection.Tapez wdSelectionIP AlorsSelection.Font.Bold = TrueAutreMsgBox "Vous devez sélectionner du texte."Fin si

Lorsque vous travaillez avec un objet Selection, nous voulons placer le point d'insertion à un endroit particulier et émettre des commandes à partir de ce point.

Début du document :

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

Début de la ligne courante :

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

Le paramètre Extend wdMove déplace le point d'insertion. Au lieu de cela, vous pouvez utiliser wdExtend qui sélectionnera tout le texte entre le point d'insertion actuel.

1 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 Déplacer. Pour déplacer la Sélection de deux caractères vers l'avant :

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

pour le faire reculer, utilisez un nombre négatif pour le paramètre Count :

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

Le paramètre d'unité peut être wdCharacter, wdWord, wdLine ou plus (utilisez l'aide de Word VBA pour voir les autres).

Pour déplacer des mots à la place :

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

La sélection est plus facile à utiliser (par rapport aux plages) car c'est comme un robot utilisant Word, imitant l'utilisateur humain. Où se trouve le point d'insertion - une action aurait lieu. Mais, cela signifie que vous devez faire attention à l'emplacement du point d'insertion ! Ce n'est pas facile après de nombreuses étapes dans le code. Sinon, Word modifierait le texte à l'endroit non souhaité.

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

1 Définir oRange = Selection.Range

ASTUCE : Utilisation Sélection est souvent plus facile que d'utiliser des plages, mais aussi beaucoup plus lent (important lorsque vous traitez de gros documents)

Paragraphes

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

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

Ci-dessus ne fonctionnerait pas (en fait, cela générera une erreur). Vous devez d'abord obtenir la plage associée à un paragraphe particulier :

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

Mais vous pouvez directement changer son style :

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

ou modifier sa mise en forme au niveau du paragraphe :

1 ActifDocument.Paragraphs(1).LeftIndent = 10

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

1 ActiveDocument.Paragraphs(1).KeepWithNext = True

Centrez le paragraphe :

1 ActiveDocument.Paragraphs(1).Alignment = wdAlignParagraphCenter

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

12 dim oPara en tant que paragrapheSet oPara = Selection.Paragraphs(1) 'ici nous attribuons 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 référencer l'ancien premier paragraphe car il a été affecté à une variable :

1234567 Exemple de sous-paragraphe()Dim oPara en tant que paragrapheDéfinir oPara = ActiveDocument.Paragraphs(1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore 'Insérer un paragrapheMsgBox oPara.Range.TextFin du sous-marin

L'objet paragraphe est très fréquemment utilisé dans les boucles :

123456789101112 Sub LoopThroughParagraphs()Dim oPara en tant que paragraphePour chaque oPara dans ActiveDocument.Paragraphs'faites quelque chose avec. nous allons simplement afficher'texte de paragraphe si son style est "Titre 4"Si oPara.Style = "Titre 4" AlorsMsgBox oPara.Range.TextFin siSuivant oParaFin du sous-marin

Conclusion du didacticiel Word VBA

Ce tutoriel a couvert les bases de Word VBA. Si vous débutez avec VBA, vous devriez également consulter notre didacticiel général VBA pour en savoir plus sur les variables, les boucles, les boîtes de messages, les paramètres, la logique conditionnelle et bien plus encore.

Exemples de macros de mots

Exemples de macros de mots
Modèles
Ajouter de nouveaux documents
Compter les mots dans la sélection
Zones de texte
Enregistrer au format PDF
Signets
les tables
Rechercher et rechercher et remplacer
Ouvrir des documents

FAQ sur Word VBA

Qu'est-ce qu'une macro de mots ?

Une macro est un terme général qui fait référence à un ensemble d'instructions de programmation qui automatisent les tâches. Les macros Word automatisent les tâches dans Word à l'aide du langage de programmation VBA.

Word a-t-il VBA?

Oui, Microsoft Word a l'éditeur VBA. Il est accessible en appuyant sur ALT + F11 ou en naviguant vers Développeur > Visual Basic.

Comment utiliser VBA dans Word ?

1. Ouvrez 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. Appuyez maintenant sur « F5 » pour exécuter la macro

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave