Bienvenue dans notre méga-guide Word VBA / Macros !
Cette page contient :
-
- Tutoriel Word VBA PDF (téléchargement gratuit)
- Word VBA "Cheat Sheet" contenant une liste des extraits de code Word VBA les plus couramment utilisés
- Tutoriel Word VBA / Macro complet.
- 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 :=wdStorySé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 documentDé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 variantevarNumberPages = _
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