3. La collection "Documents"▲
L'importance de cette collection est aussi grande que l'objet Application. C'est cette collections qui contient les documents et c'est à cette collection que l'on ajoute les nouveaux documents.
Les collections Documents possède des Propriétés et des Méthodes.
| Propriété | Description |
|---|---|
| Documents.Application | Renvoie un objet application |
| Documents.Count | Renvoie le nombre de documents qui composent la collection |
| Documents.Parent | Renvoie le parent de la collection, ici un objet application |
| Méthodes | Description |
|---|---|
| Documents.Add | Permet d'ajouter un document à la collection existante. |
| Documents.AddBlogDocument(IDFournisseur, URLPost, NomBlog, IDPost) | Ajoute un nouveau document de Blog |
| Documents.Close("MonDoc.docx") | Ferme un document de la collection, ce document peut-être réprésenté par son nom ou par son index. |
| Documents.Item(1) | Renvoie le document qui possède l'index 1 |
| Documents.Open( "c:\temp\MonDoc.docx") | Ouvre un document pour l'ajouter à la collection |
| Documents.Save | Sauvegarde les documents d'une collection. |
Sub NewDocu()
Documents.Add Template:="u:\templates\Lettre.dotm"
End SubLe code ci-dessus va ajouter un nouveau document basé sur un modèle(template) de document. Si on ne précise pas de nom de modèle, par défaut, ce sera un document basé sur le Normal.dotx.
Sub SaveDocu()
Documents.Save Noprompt:=True, SaveFormat:=WdOriginalFormat
End SubLe code qui précède va simplement sauvegarder le document, sans rien demander dans le format de sauvegarde par défaut.
3-A. L'objet Document▲
Objet principal de la collection Documents.
Il est le second objet qui possède des Évènements en plus des propriétés et méthodes.
Une fois de plus, je ne vais pas faire une liste exhaustive des propriétés, méthodes et évènements de l'objet
document, je vais me contenter d'une partie.
3-A-1. Prorpiétés▲
3-A-1-a. AttachedTemplate▲
Propriété qui renvoie le modèle de document qui à servi à la création du document.
Sub TestActiveTemplate()
Debug.Print ActiveDocument.AttachedTemplate
End SubPour un document vide, on reçoit : Normal.dotm
3-A-1-b. Background▲
Propriété qui renvoie un objet Shape (objet de la couche de dessin). Les arrières plans peuvent être constitués d'images mais aussi d'un simple remplissage coloré.
Les arrière-plans sont uniquement visibles en mode Web.
ActiveDocument.ActiveWindow.View.Type = wdWebView
With ActiveDocument.Background.Fill
.Visible = True
.ForeColor.RGB = RGB(192, 192, 192)
.BackColor.RGB = RGB(100, 100, 0)
.TwoColorGradient msoGradientHorizontal, 1
End WithIl est même possible de combiner des couleurs pour un effet visuel surprenant.
ActiveDocument.ActiveWindow.View.Type = wdWebView
ActiveDocument.Background.Fill.UserPicture _
PictureFile:="C:\Windows\Bulles de savon.bmp"Les fichiers jpeg conviennent aussi, l'image est en mosaïque (Tile).
3-A-1-c. Bibliography▲
Renvoie un objet Bibliography qui représente les références bibliographiques contenues dans un document.
On obtient des objets Bibliography lorsque l'on insère une citation.

Sub GetBibliography()
Dim strXml As String
Dim objSource As Source
Set objSource = Application.Bibliography.Sources( _
Application.Bibliography.Sources.Count)
Debug.Print objSource.XML
End Sub<b:Source xmlns:b="http://schemas.openxmlformats.org/officeDocument/2006/bibliography">
<b:Tag>Heu07</b:Tag>
<b:SourceType>Book</b:SourceType>
<b:Guid>{C69DB561-5066-46E8-9D85-449C42672324}</b:Guid>
<b:LCID>0</b:LCID>
<b:Author><b:Author>
<b:NameList><b:Person>
<b:Last>Heureux-oli</b:Last>
</b:Person>
</b:NameList>
</b:Author></b:Author>
<b:Title>Word VBA</b:Title>
<b:Year>2007</b:Year>
</b:Source>Cette propriété a été ajoutée à partir de la version 2007.
3-A-1-d. BookMarks▲
Renvoie une collection Bookmarks qui représente tous les signets d'un document.
Les BookMarks sont des objets relativements importants dans un document. Ils permettent de réaliser du publipostage, de se rendre à un endroit précis dans un document, de marquer du texte, de définir une plage de texte qui poura être utilisée.
01 Sub TestRangeBM()
02 Dim oDoc As Document
03 Dim myRange As Range
04 Set oDoc = ActiveDocument
05 Set myRange = oDoc.Range(oDoc.Bookmarks("S1").Range.Start, oDoc.Bookmarks("S2").Range.End)
06 myRange.Font.Italic = True
07 End SubLes lignes 02 et 03 servent à déclarer les variables. La ligne 04 va affecter le document actif à la variable document oDoc, le ligne 05 va affecter à la variable range la portion de texte comprise entre les signets "S1" et "S2". La ligne 06 va mettre le texte seléctionné en italique.
On peut aussi ajouter des signets sur un mot recherché !
01 Dim myRange As Range
02
03 Set myRange = ActiveDocument.Content
04 myRange.Find.Execute FindText:="bonjour", Forward:=True
05 If myRange.Find.Found = True Then Selection.Bookmarks.Add ("Signet01")
06 Debug.Print "2"; myRangeLe ligne sert a déclarer la variable, la ligne 03 va affecter le contenu du document à la variable. La ligne 05 va rechercher le mot "Bonjour" et la ligne 06 va ajouter un signet "Signet01" si le mot est trouvé.
On peut aussi ajouter du texte avec un signet.
01 Sub TestRangeBM()
02 ActiveDocument.Bookmarks("S_ici").Select
03 Selection.InsertAfter " Mon Texte à insérer"
04 End Sub3-A-1-e. BuiltInDocumentProperties▲
Renvoie une collection DocumentProperties qui représente l'ensemble des propriétés de document prédéfinies pour le document spécifié.
Sub ListProperties()
Dim rngDoc As Range
Dim proDoc As DocumentProperty
Set rngDoc = ActiveDocument.Content
rngDoc.Collapse Direction:=wdCollapseEnd
For Each proDoc In ActiveDocument.BuiltInDocumentProperties
With rngDoc
.InsertParagraphAfter
.InsertAfter proDoc.Name & "= "
On Error Resume Next
.InsertAfter proDoc.Value
End With
Next
End SubOn peut aussi modifier les BuiltInProperties.
Sub changeProperties()
ActiveDocument.BuiltInDocumentProperties(wdPropertySubject) = "Le sujet à traiter"
End Sub3-A-1-f. Characters▲
Renvoie une collection Characters qui représente les caractères
contenus dans un document. En lecture seule.
Comme pour toute collection, on peut compter les caractères.
ActiveDocument.Characters.Count3-A-1-g. ChildNodeSuggestions▲
Renvoie une collection XMLChildNodeSuggestions qui représente la liste des éléments autorisés pour le document.
Sub GetChildNodeSuggestions()
Dim objSuggestion As XMLChildNodeSuggestion
Dim objNode As XMLNode
Set objNode = Selection.XMLParentNode
For Each objSuggestion In objNode.ChildNodeSuggestions
objSuggestion.Insert
Selection.MoveRight
Next
End SubCe code peret pour une sélection parent d'insérer les nodes enfants autorisé. Une image sera plus parlante. J'ai repris les fichiers qui ont servi dans l'article traitant du XML dans Office.
Ce que nous possédons.
Ajout d'un Node Parent.

Après Ajout.

On exécute la procédure
On a bien les nodes enfants qui ont été ajoutés.
3-A-1-h. Comments▲
Renvoie une collection Comments qui représente tous les commentaires contenus
dans le document spécifié. La collection est en lecture seule.
Les commentaires sont ajoutés par les utilisateurs dans le cas d'un travail collaboratif.
On peut obtenir des commentaires les propriétés suivantes :
- Auteur
- Date
- Index
- Range (Contenu)
Il est possible de modifier un commentaire par l'usage de la méthode "Edit".
Public Sub testComment()
Dim com As Comment
Set com = ActiveDocument.Comments(1)
With com
.Edit
.Range.Text = "Mon nouveau texte"
End With
End SubLa méthode Add permet d'ajouter un Commentaire.
Sub Comment3rd()
Dim myRange As Range
Set myRange = ActiveDocument.Paragraphs(3).Range
ActiveDocument.Comments.Add Range:=myRange, _
Text:="Troisième paragraphe"
End SubLes arguments à passer sont "Range" et "Text"
3-A-1-i. Compatibility▲
Propriété qui permet de modifier certains paramètres de compatibilité. On retrouve ces paramètres dans les options de Word, Otpions Avancées.
3-A-1-j. Content▲
Renvoie un objet Range qui représente l'article (article : zone d'un document qui contient une plage de texte distinct des autres zones de texte dans un document. Par exemple, si un document inclut un corps de texte, des notes de bas de page et des en-têtes, il contient un article principal, un article de notes de bas de page et un article d'en-tête.) principal d'un document. En lecture seule.
Dim hs As Range
Set hs = ActiveDocument.StoryRanges(wdPrimaryFooterStory)
Debug.Print hs.TextNe va renvoyer que le texte contenu dans le premier pied de page.
Debug.Print ActiveDocument.Content.Text3-A-1-k. ContentControls▲
Cette propriété a été ajoutée avec la version 2007.
Les contrôles de contenu sont des listes de choix contenant plusieurs entrées.
Il est parfois intéressant d'avoir des listes contenant des choix, soit pour imposer l'élément d'une liste, soit
pour faciliter la saisie de données ou de texte.
Public Sub ContentControlAdd()
Dim objCC As ContentControl
ActiveDocument.Paragraphs(3).Range.Select
Set objCC = ActiveDocument.ContentControls.Add(wdContentControlDropdownList)
objCC.Title = "Mon moyen de transport préféré"
'List entries
objCC.DropdownListEntries.Add "Pieds"
objCC.DropdownListEntries.Add "Vélo"
objCC.DropdownListEntries.Add "Cheval"
objCC.DropdownListEntries.Add "Voiture"
objCC.DropdownListEntries.Add "Bus"
objCC.DropdownListEntries.Add "Train"
End Sub
3-A-1-l. DefaultTabStop▲
Renvoie ou définit l'intervalle, exprimé en points, qui sépare les tabulations par défaut du document spécifié. Type de données Single en lecture-écriture.
Sub ArretTabulation()
ActiveDocument.DefaultTabStop = CentimetersToPoints(1)
End Sub3-A-1-m. EndNotes▲
Renvoie une collection Endnotes qui représente toutes les notes de fin contenues
dans un document. En lecture seule.
La seule méthode disponible pour les notes de fin, est "Delete".
Sub NoteDeFin()
With ActiveDocument.Endnotes(1).Range
.Text = "Nouveau texte de la première note de fin"
.Font.AllCaps = True
.Bold
End With
End SubCe code va simplement remplaver la note de fin existante par le texte de la procédure et modifier les attributs du texte.
3-A-1-n. Fields▲
Renvoie une collection Fields qui représente tous les champs contenus dans le document.
ActiveDocument.Fields.Update
Les fields peuvent avoir deux états.
Le premier, afficher leur code et non pas les données.
Le second, afficheer les données.
Sub ListeChamps()
Dim fld As Field
Dim stTemp As String
For Each fld In ActiveDocument.Fields
stTemp = stTemp & "Code : " & fld.Code.Text & vbCrLf
stTemp = stTemp & "Valeur : " & fld.Result & vbCrLf
Next fld
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdSectionBreakNextPage
Selection.TypeText stTemp
End SubAjout d'un champ
ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldAuthorComment parcourir la collection de champs d'un document et si ce champs est un champ image, fixer une taille unique.
Public Sub TestShape()
Dim fld As Field
For Each fld In ActiveDocument.Fields
If fld.Type = wdFieldIncludePicture Then fld.InlineShape.Width = CentimetersToPoints(6)
Next fld
End SubIl est assez facile de trouver le nom du champ que vous chercher. Au travers de l'interface utilisateur de Word, il vous suffit d'afficher la boîte de dialogue d'insertion de champs et d'afficher les codes, l'ajout de wdFields devant le nom du champ vous donnes le type du champ.
3-A-1-o. FootNotes▲
Pendant de la propriété EndNotes, la propriété FootNotes renvoie une collection Footnotes qui représente toutes les notes de bas de page contenues dans un document.
Sub FootNoteInsert()
ActiveDocument.Paragraphs(3).Range.Select
Selection.Footnotes.Add Range:=Selection.Range, Text:="Ma note de bas de page du 3ième Paragraphe"
End Sub3-A-1-p. FormFields▲
Renvoie une collection FormFields qui représente tous les champs de formulaire contenus dans le document.
A ne pas confondre avec les contrôles des UserForms.
Ils sont au nombre de trois : la case à cocher, la liste déroulante et le TextBox.

Ils sont accessibles par signets. Lors de leur création, Word leur attribue un signet.
Les signets sont TexteX, CaseACocherX et ListeDéroulanteX.
ActiveDocument.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormCheckBoxActiveDocument.FormFields("CaseACocher1").CheckBox.Value = TrueDans le cas d'un contrôle formulaire liste déroulante, on peut ajouter en plus du contrôle, les éléments qu'elle va contenir.
3-A-1-q. FormsDesign▲
Cette proriété renvoie True si le document est en mode modification.
Si c'est le cas, on ne peut intervenir sur les contrôles, il est préférable de faire le test avant de vous lancer
dans la modification des contrôles formulaires.
If ActiveDocument.FormsDesign then Exit Sub3-A-1-r. Frames▲
Renvoie une collection Frames qui représente tous les cadres contenus dans un document.

Sub FrameAdd()
Dim myFrame As Frame
If ActiveDocument.Frames.Count < 4 Then
Set myFrame = ActiveDocument.Frames.Add(Range:=Selection.Range)
End If
End Sub3-A-1-s. FullName▲
Renvoie une valeur de type String qui représente le nom du document accompagné du chemin d'accès.
Sub FullNameTest()
MsgBox ActiveDocument.FullName
End Sub3-A-1-t. HasPassword▲
Cette propriété a la valeur True si un mot depasse est nécessaire pour ouvrir le document.
Il ne fonctionne que pour un document ouvert. En effet, le document doit être ouvert pour que lapropriété puisse
être testée. Si le document est protégé, il devient difficile de l'ouvrir sans le mot de passe.
Sub HasPWDTest()
If ActiveDocument.HasPassword Then MsgBox "Le document est protégé"
End Sub3-A-1-u. Indexes▲
Renvoie une collection Indexes qui représente l'ensemble des index contenus dans le document spécifié.
Pour ajouter des entrées d'index, vous pouvez parcourir le document à la recherhe des mots qui vous intéressent.
Sub indexInsert()
Dim inText As String
Dim myRange As Range
inText = InputBox("Entrez le mot à indexer !", "Mot pour l'index")
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:=inText, Forward:=True
If myRange.Find.Found = True Then ActiveDocument.Indexes.MarkEntry Range:=Selection.Range, Entry:=Selection.Range.Text
End SubMais vous pouvez également créer des entrées d'index au départ d'un second fichier contenant une liste de mots.
Sub concordances()
Dim che As String
Dim nom As String
che = ActiveDocument.Path & "\listemot.docm"
nom = ActiveDocument.Name
Debug.Print che
ActiveDocument.Indexes.AutoMarkEntries ConcordanceFileName:=che
End SubOn peut également marquer toutes les entrées d'un document.
Sub index2()
Dim inText As String
Dim myRange As Range
inText = InputBox("Entrez le mot à indexer !", "Mot pour l'index")
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:=inText, Forward:=True
ActiveDocument.Indexes.MarkAllEntries Range:=myRange, Entry:=inText
End SubSi en plus on désire ajouter un index en fin de document. Comme une erreur est levée si le document ne possède pas d'index, j'utilise cette erreur pour créer mon index.
Sub index2()
On Error GoTo om
Dim inText As String
Dim myRange As Range
inText = InputBox("Entrez le mot à indexer !", "Mot pour l'index")
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:=inText, Forward:=True
ActiveDocument.Indexes.MarkAllEntries Range:=myRange, Entry:=inText
If Not IsNull(ActiveDocument.Indexes(1).Range) Then
ActiveDocument.Indexes(1).Update
Else
om:
Set myRange = ActiveDocument.Content
myRange.Collapse Direction:=wdCollapseEnd
ActiveDocument.Indexes.Add Range:=myRange, Type:=wdIndexRunin
End If
ActiveDocument.Indexes(1).Update
End Sub3-A-1-v. InLineShapes et Shapes▲
Renvoie une collection InlineShapes ou Shapes qui représente tous les objets InlineShape ou Shapes dans un document. Je vais traiter ces deux types d'objet en même temps à cause de leurs similitudes.
On en arrive à se poser la question quelle est la différence entre un objet Shapes et un objet InLineShapes.

L'objet InLineShape se trouve dans le texte de la même manière qu'un caractère, alors qu'un Objet Shape est indépendant du texte. Si vous modifiez les propriétés de l'objet, vous allez le transformer en Shapes.
Sub AddShape()
Dim myFile As Variant
Dim myDialog As FileDialog
Set myDialog = Application.FileDialog(msoFileDialogFilePicker)
With myDialog
.AllowMultiSelect = False
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1
.Show
End With
myFile = myDialog.SelectedItems(1)
ActiveDocument.Shapes.AddPicture myFile, True, False
End Sub| Argument | Description |
|---|---|
| AddChart | Insère un graphique, tel qu'il a été spécifié, comme une forme insérée dans le document actif. En outre, cette méthode ouvre Microsoft Office Excel avec une feuille qui contient les données par défaut utilisées par Microsoft Office Word pour créer le graphique. |
| AddHorizontalLine | Ajoute une ligne horizontale créée à partir d'un fichier image au document actif. |
| AddHorizontalLineStandard | Ajoute une ligne horizontale au document actif. |
| AddOLEControl | Crée un contrôle ActiveX (anciennement contrôle OLE). Renvoie l'objet InlineShape qui représente le nouveau contrôle ActiveX. |
| AddOLEObject | Crée un objet OLE. Renvoie l'objet InlineShape qui représente le nouvel objet OLE. |
| AddPicture | Ajoute une image à un document. Renvoie un objet Shape qui représente l'image. |
| AddPictureBullet | Ajoute une puce image provenant d'un fichier image dans le document actif. Renvoie un objet InlineShape. |
Il est possible de convertir un Objet InLineShape en Shape.
ActiveDocument.Shapes(1).ConvertToInlineShapeActiveDocument.InlineShapes(1).ConvertToShapeOn peut aussi ajouter un objet Shape.
Sub AddShape()
Dim myDoc As Document
Set myDoc = Documents.Add
myDoc.Shapes.AddShape msoShapeRectangle, 5, 25, 100, 50
End Sub3-A-1-w. LineNumbering▲
Coolection qui contient la numérotation des lignes d'un document. Cette numérotation se situe dans la marge.
Sub NumberingLines()
With ActiveDocument.Sections(1).PageSetup.LineNumbering
.Active = True
.CountBy = 5
.RestartMode = wdRestartPage ' wdRestartContinuous; wdRestartSection
End With
End SubPour certains documents officiel, il est intéressant de pouvoir utiliser cette numérotation.
3-A-1-x. List▲
Représente un format de liste donné qui a été appliqué aux paragraphes spécifiés d'un document.
Sub NbreListe()
Dim lst As List
For Each lst In ActiveDocument.Lists
Debug.Print lst.CountNumberedItems
lst.ConvertNumbersToText
Next lst
End SubMéthode intéressante, la conversion des numéro de liste en texte.
3-A-1-y. ListEntries▲
Collection d'objets ListEntry qui représentent les éléments contenus dans un champ de formulaire de type liste déroulante.
Dans le cadre d'utilisation de formulaires, on peut remplir les listes déroulantes par VBA.
Sub AddListDeroul()
Dim myRange As Range
Set myRange = ActiveDocument.Paragraphs(1).Range
ActiveDocument.FormFields.Add Range:=myRange, Type:=wdFieldFormDropDown
With ActiveDocument.FormFields(1).DropDown.ListEntries
.Add Name:="Element 2"
.Add Name:="Element 1"
.Add Name:="Element 3"
End With
End Sub3-A-1-z. ListFormat▲
Représente les attributs de mise en forme de liste qui peuvent être appliqués aux paragraphes d'une plage.
Cette propriété est en relation directe avec la propriété "LineNumbering" (3-A-1-x).
Si l'on désire appliquer une liste à puce pour les paragraphes 2 à 4, on pourras utiliser le code suivant :
Sub NumberingListe()
Dim myRange As Range
Set myRange = ActiveDocument.Range(ActiveDocument.Paragraphs(2).Range.Start, ActiveDocument.Paragraphs(4).Range.End)
myRange.ListFormat.ApplyBulletDefault
End SubActiveDocument.Paragraphs(2).Range.Start represente le second paragraphe pris dès le début, si nous avions placé End
à la place de start, ce paragraphe n'aurait pas été pris en compte pour la liste à puce.
Set myRange = ActiveDocument.Range(ActiveDocument.Paragraphs(2).Range.Start, ActiveDocument.Paragraphs(4).Range.End)
permet de défir une plage de données avec un début et une fin.
3-A-1-aa. ListGalleries▲
Collection d'objets ListGallery qui représentent les trois onglets de la boîte de dialogue Puces et numéros.
Sub NumberingListe()
Dim myRange As Range
Dim temp3
Set temp3 = ListGalleries(wdNumberGallery).ListTemplates(2)
Set myRange = ActiveDocument.Range(ActiveDocument.Paragraphs(2).Range.Start, ActiveDocument.Paragraphs(4).Range.End)
myRange.ListFormat.ApplyListTemplate ListTemplate:=temp3
End Sub| Paramètre | ||
|---|---|---|
| ListGalleries() | wdBulletGallery | Liste à puce |
| wdNumberGallery | Liste numérotée | |
| wdOutlineNumberGallery | Liste numérotée hiérachique |
Pour la "ListTemplate", j evous laisse faire quelques essais, en fonction de l'index choisi, on se retrouve avec des puces ou numéros différents.
3-A-1-ab. ListLevel▲
Représente un niveau de liste donné, qui correspond soit au seul niveau disponible dans le cas d'une liste à puces ou numérotée, soit à l'un des neuf niveaux dans le cas d'une liste numérotée de type plan.
Sub NumberingListe()
Dim myRange As Range
Dim temp3
Set temp3 = ListGalleries(wdNumberGallery).ListTemplates(1)
Set myRange = ActiveDocument.Range(ActiveDocument.Paragraphs(2).Range.Start, ActiveDocument.Paragraphs(4).Range.End)
myRange.ListFormat.ApplyListTemplate ListTemplate:=temp3
ActiveDocument.ListTemplates(1).ListLevels(1).StartAt = 4
End SubLe code ci-dessus a été modifié et il commence maintenant à 4.
3-A-1-ac. ListParagraphs▲
Represente la collection des paragraphes qui sont impacté par une liste.
si on exécute les lignes suivantes à la suites des lignes de la propriété précédente, on colore en truquoise les paragaphes numérotés.
Sub ParaColorChange()
Dim para As Paragraph
For Each para In ActiveDocument.ListParagraphs
para.Range.HighlightColorIndex = wdTurquoise
Next para3-A-1-ad. MailMerge▲
Représente la fonction de publipostage de Word.
Une section entrière va être réservée à la fonction MailMerge.
3-A-1-ae. OMath▲
Représente une équation. Les objets OMath sont membres de la collection OMaths.
Sub equat()
Dim objRange As Range
Dim objEq As OMath
Set objRange = Selection.Range
objRange.Text = "Celsius = (5/9)(Fahrenheit 32)"
Set objRange = Selection.OMaths.Add(objRange)
Set objEq = objRange.OMaths(1)
objEq.BuildUp
End Sub
Avec : objRange.Text = "Cercle = ((Beta.l)/(Beta.Pi))" on obtient ceci :

3-A-1-af. PageSetup▲
Renvoie un objet PageSetup associé au document spécifié.
Une fonction très importante est "CentimetersToPoints". Convertit en points une mesure exprimée en centimètres (1 centimètre = 28,35 points). Renvoie le résultat en tant que donnée de type Single.
Sub MiseEnPage()
With ActiveDocument.PageSetup
.LeftMargin = CentimetersToPoints(2)
.RightMargin = CentimetersToPoints(2)
.TopMargin = CentimetersToPoints(2.5)
.BottomMargin = CentimetersToPoints(2.5)
End With
End SubMais la définition des marges n'est pas la seule option disponible pour la mise en page.
3-A-1-af-i. BookFoldPrinting▲
Mise à vrai "True" cette propriété permet d'imprimer en livret.
.BookFoldPrinting = True3-A-1-af-ii. CharsLine▲
Limite le nombre de caractères par ligne. Si vous mettez la valeur à 2, nous n'aurez plus que 2 caractères par ligne.
.CharsLine = 203-A-1-af-iii. DifferentFirstPageHeaderFooter▲
Cette propriété permet de générer une première page différente.
Sub premierepage()
Dim sec As Section
For Each sec In ActiveDocument.Sections
With sec.PageSetup
.DifferentFirstPageHeaderFooter = True
With sec.Headers(wdHeaderFooterPrimary)
.LinkToPrevious = False
End With
End With
Next sec
End SubLe code ci-dessus va insérer une première page différente pour chaque section du document et va briser le lien avec la section précédente.
3-A-1-af-iv. FirstPageTray▲
Beaucoup d'entreprises possèdent un papier à entête qui est généralement utilisé pour les pages de garde des documents. Aujouté au fait que la plupart des imprimantes possèdent plusieurs bacs d'alimentation, il est prévu d'alimenter en parpier différent la première page des documents.
ActiveDocument.PageSetup.FirstPageTray = wdPrinterManualFeedVous erez amené avec ce code à mettre une feuille dans le bac d'alimentation manuel de l'imprimante. Plus sérieusement, il est possible d'utiliser le wbPrinterLowerBin, wdPrinterUpperBin, wdPrinterMiddleBin, ...
3-A-1-af-v. FooterDistance et HeaderDistance▲
Permet de définir la distance qui va séparer le peid ou l'entête de page du bord de la page.
ActiveDocument.PageSetup.FooterDistance = CentimetersToPoints(15)3-A-1-af-vi. Orientation▲
Prorpiété qui définit l'orientation à donner au document. Il n'y a que deux choix, Portrait ou Paysage.
ActiveDocument.PageSetup.Orientation = wdOrientLandscape 'wdOrientPortrait3-A-1-af-vii. TextColumns▲
Propriété qui permet lors de la mise en page d'avoir le texte en colonne. ar défaut, le texte comporte au moins une colonne.
Sub Colo()
With ActiveDocument.PageSetup.TextColumns
.SetCount NumColumns:=2
End With
End Sub3-A-1-ag. Path▲
Renvoie une donnée de type texte contenant le chemin du document. Si le document n'a pas encore été sauvegardé, la chaîne de caractère est vide.
ActviDocument.PathEn complément, on peut citer la propriété Name qui retourne le nom du document et aussi la propriété FullName qui renvoie le chemin du document et le nom de fichier.
ActiveDocument.Name
ActiveDocument.FullName3-A-1-ah. PrintFormsData▲
Cette prorpiété lorsqu'elle est sur True, permet d'imprimer les données d'un formulaire.
ActiveDocument.PrintFormsData = True
ActiveDocument.PrintOut3-A-1-ai. PrintRevisions▲
Cette prorpiété lorsqu'elle est à True imprime les marques de révision d'un document.
ActiveDocument.PrintRevisions = False3-A-1-aj. ProtectionType▲
Renvoie le type de protection pour le document spécifié. Il peut s'agir d'une des constantes WdProtectionType suivantes : wdAllowOnlyComments, wdAllowOnlyFormFields, wdAllowOnlyReading, wdAllowOnlyRevisions ou wdNoProtection.
La protection s'obtient par le code suivant :
Sub ProtectFormu()
ActiveDocument.Protect Type:=wdAllowOnlyFormFields
End SubLa syntaxe est ActiveDocument.Protect Type:=wdAllowOnlyReading, Noreset:= ,Password:="Password"
Sub DeverrFormu()
ActiveDocument.Protect Type:=wdNoProtection
End SubActiveDocument.UnprotectOn obtient le type de protection :
If ActiveDocument.ProtectionType = wdNoProtection Then
MsgBox "Le document n'est pas protégé !"
End If3-A-1-ak. RemoveDateAndTime et RemovePersonalInformation▲
Ces deux propriétés vont si elles sont mise à True supprimer les informations concernant la date et les informations personnelles du document. Dans le cas de distribution de fichiers par exemple.
ActiveDocument.RemovePersonalInformation = True
ActiveDocument.RemoveDateAndTime = True3-A-1-al. Saved▲
Propriété qui renvoie l'état de sauvegarde du document. Si cette prorpiété est à False, Word affichera une boîte de dialogue vous proposant la sauvegarde du document. On peut forcer la valeur de cette propriété.
ActiveDocument.Saved = TrueCe code fera "croire" à Word que le document a été sauvegardé.
3-A-1-am. SaveFormsData▲
Propriété qui détermine si seule les données du formulaire doivent être sauvegardées. Lorsque cette propriété est Vraie, le document est sauvegardé au format texte avec des données séparées par des ";". Il devient alors plus facile de les utiliser dans une base de données.
ActiveDocument.SaveFormsData = True3-A-1-an. Sections▲
Renvoie une collection Section qui représente les sections du document spécifié. On adresse la section par son Index.
Sub SectionMiseEnPage()
With ActiveDocument.Sections(2).PageSetup
.Orientation = wdOrientLandscape
.CharsLine = 10
With .LineNumbering
.Active = True
.CountBy = 2
End With
End With
End SubCe code va changer l'orientation des pages de la seconde section du document, limiter le nombre de caractères par ligne à 10, activer la numérotation des lignes par 2.
3-A-1-ao. Sentences▲
Renvoie une collection Sentences qui représente toutes les phrases du document. Sentences ou Phrase représente la portion de texte qui compose une phrase, cette protion de texte s'arrête aux points.
Sub Phrase()
Dim stTemp As String
stTemp = ActiveDocument.Sentences(1)
stTemp = stTemp & ".docx"
ActiveDocument.SaveAs stTemp
End SubAvec ce code, on va lors de la sauvegarde du document lui donner un nom qui sera le texte de la première phrase du document.
Sub LettreMajuscule()
Dim r As Range
Dim i As Integer
Debug.Print ActiveDocument.Sentences.Count
For i = 1 To ActiveDocument.Sentences.Count
Debug.Print ActiveDocument.Sentences(i).Text
ActiveDocument.Sentences(i).Select
Selection.Text = UCase(Left(Selection.Text, 1)) & Right(Selection.Text, (Len(Selection.Text) - 1))
Next i
End SubCe code va mettre en majuscule la première lettre de chaque phrase du document.
3-A-1-ap. Styles▲
Représente la collection de styles du document spécifié.
Il existe deux types de style, les styles prédéfinis dans l'applicaton et les styles définis par l'utilisateur.
On peut adresser les styles de deux manières différentes : la première par l'index du style (peu pratique), la seconde
par le nom du style, si c'est un BuiltInStyle, son nom commencera par wd : wdStyleHeading1 pour le titre 1; on peut aussi l'adresser par
le nom qui est affiché dans l'interface graphique "Titre 1".
La première notation est à préférer à la seconde par son universalité, si votre document est distribué et utilisé par des utilisateurs ayant une
autre version linguistique de Word, wdStyleHeading1 sera reconnu, alors que Titre 1 ne le sera pas.
Sub AjoutTitre1()
Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
If Trim(para.Range.Words(1).Text) = "Chapitre" Then
para.Style = ActiveDocument.Styles(wdStyleHeading1) 'l'utilisation de ("Titre 1") aurait eu le même effet.
End If
Next para
End SubIl est possible de modifier les attributs d'un style lors de son utilisation.
ActiveDocument.Styles(wdStyleHeading1).Font.Bold = FalseIl est également possible de créer un nouveau style en VBA, et pour l'interface graphique, il faut définir un style qui servira de base.
Sub NewStyleOli()
Dim docNew As Document
Dim styleNew As Style
Set docNew = Documents.Add
Set styleNew = docNew.Styles.Add("Olivier01")
With styleNew
.BaseStyle = docNew.Styles(wdStyleHeading1)
.ParagraphFormat.LeftIndent = 72
.Font.Animation = wdAnimationBlinkingBackground
End With
End SubLe résultat :

3-A-1-aq. TablesOfContents (TOC)▲
Renvoie une collection TablesOfContents qui représente les tables des matières contenues dans le document spécifié.
Sub TOCAjout()
Dim myRange As Range
Dim myToc As TableOfContents
Set myRange = ActiveDocument.Range(Start:=0, End:=0)
If ActiveDocument.TablesOfContents.Count <> 0 Then
For Each myToc In ActiveDocument.TablesOfContents
myToc.Update
Next myToc
Else
ActiveDocument.TablesOfContents.Add myRange, UseHeadingStyles:=True, UpperHeadingLevel:=1, LowerHeadingLevel:=3
End If
End Sub
Avec ce code, on va vérifier la présence d'au moins une table des matières sur le document, si la table existe, on va la mettre
à jour et si elle n'existe pas, on va la créer.
Ne sachan pas combien de tables peuvent exister dans le document, je fais une boucle sur la collection.
3-A-1-ar. Words▲
Words représente la collection des mots d'un objet Range. Seulement, contrairement aux autre collections, Il n'y a pas de Word, puisque Word est l'objet Application. Et curieusement, un mot, appartenant à la collection Words est une Range.
Sub TestWords()
Dim aWd As Range
For Each aWd In ActiveDocument.Words
Debug.Print Len(aWd)
Next aWd
End Sub3-A-1-as. Variables▲
Renvoie une collection Variables qui représente les variables stockées dans le document spécifié.
On peut utiliser ces variables pour stocker certaines informations qui devront être réutilisées ultérieurment, comme une
numérotation, une série de date, un historique,...
Le principe est assez simple, on affecte au document une variable. On peut adresser une variable par son nom ou par son index.
ActiveDocument.Variables.Add Name:="maVariable"Lorsque la variable est ajoutée au document, on peut lui affecter une valeur.
ActiveDocument.Variables("maVariable").Value:="La Valeur"On peut le faire en une seule opération :
ActiveDocument.Variables.Add Name:="maVariable", Value:="Ma Valeur"
Si la variable existe déjà, on reçoit un message d'erreur '5903'. Il est donc préférable avant d'ajouter une
variable à un document, vérifier qu'elle n'existe pas !
On peut aussi gérer l'erreur et si on lève l'erreur '5903', on passe directement à l'affectation de la valeur.
Sub AddVar()
On Error GoTo monErr
ActiveDocument.Variables.Add Name:="maVariable"
monErr:
ActiveDocument.Variables("maVariable").Value = "Ma Valeur"
End SubPour vérifier que la variable n'existe pas, il faut obtenir son index.
Sub AddVar()
Dim aVar As Variable
Dim num as Integer
For Each aVar In ActiveDocument.Variables
If aVar.Name = "maVariable" Then num = aVar.Index
Next aVar
If num = 0 Then
ActiveDocument.Variables.Add Name:="maVariable", Value:=6
Else
ActiveDocument.Variables(num).Value = 6
End If
End Sub3-A-2. Méthodes▲
3-A-2-a. AcceptAllRevisions▲
Methode qui permet d'accepter toutes les modifictions du document spécifié.
ActiveDocument.AcceptAllRevisionsOn peut associer cette méthode à la suivante qui accepte les modifications affichées.
ActiveDocument.AcceptAllRevisionsShown3-A-2-b. Activate▲
Méthode qui va activer un document à condition qu'il soit ouvert, si le document n'est pas ouvert, il faut l'ouvrir. Elle ne s'applique pas à ActiveDocument.
Pour activer un document, on peut passer par le nom du document ou par son index. La première
solution et de loin la plus facile à condition que les documents aient été précédemment sauvegardés.
Sub ActiverDoc()
Documents("ListeNum.docm").Activate
End SubTenter d'activer un document avec un nom erroné, ou un document qui n'est pas ouvert lève une erreur '4160'.
3-A-2-c. ApplyDocumentTheme▲
Disponible deuis la version 2007, cette méthode permet d'appliquer à un document un thème.
Une thème est une association de mise en forme du document.
Aspect intéressant des thèmes, ils sont disponibles pour toutes les applications office.
ActiveDocument.ApplyDocumentTheme "f:\Program Files\Microsoft Office\Document Themes 12\Aspect.thmx"3-A-2-d. ApplyQuickStyleSet▲
Modifie le jeu de Style rapide appliqué au document.
Ce jeu de style peut être modifié et vous pouvez ajouter vos propres styles rapides.
ActiveDocument.ApplyQuickStyleSet ("Moderne")3-A-2-e. ApplyTheme▲
Applique un thème (ensemble d'éléments de conception unifiés qui donnent un aspect cohérent à votre document en
utilisant des couleurs, des polices et des graphismes) à un document ouvert.
Vous trouverez la liste des thèmes disponible dans le répertoire suivant : F:\Program Files\Fichiers communs\Microsoft Shared\THEMESXX
XX
ActiveDocument.ApplyTheme "Compass 111"
ActiveDocument.ApplyTheme "Compass 110"
Le paramètre passé à la méthode se compose de deux éléments.
Le premier est le nom du répertoire qui contient les Thèmes.
Le second composé de 3 booléens avec la premiére posistion qui répresent les couleurs vives pour la police, la seconde position,
l'activation d'images animées et le troisième l'image de fond du document.
3-A-2-f. CheckGrammar et CheckSpelling▲
CheckGrammar lance la vérification de l'orthographe et de la grammaire dans la plage ou le document spécifié, alors que CheckSpelling lance la correction orthographique du document.
ActiveDocument.CheckGrammar 'CheckSpelling3-A-2-g. Close▲
La méthode Close permet de fermer un document, ce document peut être le document actif, ou un autre document de la
collection Documents.
Pour le document ouvert, on appliquera la méthode à l'ActiveDocument, si le document n'est pas le document actif,
on adressera le document par son nom ou par son index.
La méthode close est appliquée avec certains paramètres.
| Paramètres | Valeurs | Résultats |
|---|---|---|
| SaveChanges | wdDoNotSaveChanges | Ne pas sauvegarder les changements |
| wdPromptToSaveChanges | Demander à l'utilisateur | |
| wdSaveChanges | Sauvegarder les changement | |
| OriginalFormat | wdOriginalDocumentFormat | Savegarde dans le format original du document |
| wdPromptUser | Demander à l'utilisateur | |
| wdWordDocument | Document Word | |
| RouteDocument | Facultatif True |
ActiveDocument.Close SaveChanges:=wdPromptToSaveChanges, OriginalFormat:=wdWordDocument3-A-2-h. Compare▲
Affiche des marques de révision qui indiquent en quoi le document spécifié diffère d'un autre document.
Nous allons comparer le document actif avec un autre document sauvegardé.
Sub TestComparer()
Dim rev As Revision
Dim res As Byte
ActiveDocument.Compare "Les Lumières.docm"
For Each rev In ActiveDocument.Revisions
res = MsgBox(rev.Range.Text, vbOKCancel)
If res = 1 Then rev.Accept
Next rev
End SubLa possibilité de détecter les changements de format existe. Le code ci-dessous a été modifié pour prendre ne compte les changements de format.
ActiveDocument.Compare Name:="Les Lumières sont ce qui fait sortir l.docm", DetectFormatChanges:=True3-A-2-i. Convert▲
Fonctionnalité ajoutée à la version 2007. Cette méthode convertit le document dans le format de fichier le plus récent. En gros, si vous avez un .doc et que vous souhaitez le convertir en .docx, c'est la méthode à utiliser.
Documents("monDoc.doc").Convert3-A-2-j. ConvertNumbersToText▲
Convertit en texte les numéros de liste et les champs LISTNUM dans le document spécifié. Propriété intéressante si vous désirez utiliser le contenu de votre document dans une autre application.
Une fois utilisée, la numérotation automatique est interrompue, n'utilisez cette méthode que lorsque votre document est terminé.
ActiveDocument.ConvertNumbersToText3-A-2-k. CopyStylesFromTemplate▲
Méthode qui permet de copier les styles d'un modèle vers un document ou un autre modèle.
Documents("Les lumières.docx").CopyStylesFromTemplate Template:="F:\Program Files\Microsoft Office\Templates\1036\MedianLetter.Dotx"3-A-2-l. DataForm▲
Affiche la boîte de dialogue Formulaire de données, qui vous permet d'ajouter, de supprimer ou de modifier des enregistrements.
ActiveDocument.DataForm
Si il n'exite pas de table dans le document, une erreur est levée. Il est donc préférable de vérifier la présence d'une table
avant d'utiliser cette méthode et éventuellement en créer une table.
Si le document contient plusieurs tables, seule la table contenant la sélection est prise en compte. En plus de vérifier la présence
d'une table, il sera important de tenir aussi compte du nombre de tables.
Sub OuvrirDataForm()
'Déclaration des variables
Dim aDoc As Document
Dim tbl As Table
Dim nbTbl As Integer
Dim chxTbl As Integer
'Nombre de tableaux présents dans le document
nbTbl = ActiveDocument.Tables.Count
'Structure décisionnelle afin de déterminer quel tableau sera utilisé
Select Case nbTbl
Case 0 'Aucun tableau dans le document
Set aDoc = Documents.Add
With aDoc
.Tables.Add Range:=aDoc.Content, NumRows:=2, NumColumns:=2
.Tables(1).Cell(1, 1).Range.Text = "Name"
.Tables(1).Cell(1, 2).Range.Text = "Age"
.DataForm
End With
Case 1 'Une seule table
ActiveDocument.DataForm
Case Else 'Plusieurs tables
chxTbl = InputBox("Entrez un index de table entre 1 et " & nbTbl & " !", "Choix d'un tableau", 1)
If chxTbl > nbTbl Then
MsgBox ("Ce tableau n'existe pas !!")
Exit Sub
End If
ActiveDocument.Tables(chxTbl).Range.Select
ActiveDocument.DataForm
End Select
End SubDans le code ci dessusn nous allons avant d'ouvrir le DataForm vérifier le nombre de tables présentes dans le document. Si il n'y a pas de table, nous allons en créer une, si il n'y a qu'une seule table, nous allons l'utiliser, si le document, comporte plusieurs tables, nous allons proposer à l'utilisateur de choisir une table. Si l'index de la table n'existe pas, nous allons avertir l'utilisateur et terminer la procédure.
3-A-2-m. DowngradeDocument▲
Alors que Convert permet de convertir des documents .doc en .docx, DowngradeDocument pemret de faire l'opération dans l'autre sens.
Je vous déconsille de convertir les documents pour les versions antérieures, il existe un pack de compatibilité qui permet d'utiliser
des documents OfficeOpenXML avec les versions antérieures de Word.
La raison est assez simple, les document OfficeOpenXML sont plus robustes que les documents propriétaires.
Je vous propose un petit test, changez l'extension de votre document de .docx en .zip, ouvrez le fichier obtenu et vous allez pouvoir
explorer le contenu du document. Ce document va contenir des fichier .xml qui sont éditable avec n'importel quel éditeur de texte classique,
ActiveDocument.DowngradeDocument3-A-2-n. ExportAsFixedFormat▲
Méthode ajoutée avec la version 2007, cette méthode permet l'export d'un document vers le format XPS ou PDF. Utilistaire de conversion PDF et XPS
Si l'utilitaire de conversion n'est pas installé sur votre PC, vous devez l'installer pour utiliser cette méthode.
L'authenticité de votre installation sera vérifiée.
ActiveDocument.ExportAsFixedFormat "Mon Test.pdf", wdExportFormatPDF, True, _
wdExportOptimizeForPrint, wdExportAllDocument, , , wdExportDocumentContent, _
True, True, wdExportCreateHeadingBookmarks, True, True| Paramètres | Valeurs |
|---|---|
| OutputFileName | Nom du ficher |
| wdExportFormat | wdExportFormatPDF wdExportFormatXPS |
| OpenAfterExport | True False |
| WdExportOptimizeFor | wdExportOptimizeForOnScreen wdExportOptimizeForPrint |
| WdExportRange | wdExportAllDocument wdExportCurrentPage wdExportFromTo wdExportSelection |
| From To | A utiliser aver wdExportFromTo |
| WdExportItem | wdExportDocumentContent wdExportDocumentWithMarkup |
| IncludeDocProps | True False |
| KeepIRM | True False |
| WdExportCreateBookmarks | wdExportCreateHeadingBookmarks wdExportCreateNoBookmarks wdExportCreateWordBookmarks |
| BitMapMissingFonts | True False |
3-A-2-o. FitToPages▲
Diminue la taille des caractères du texte de sorte que le document puisse occuper une page de moins.
ActiveDocument.FitToPages3-A-2-p. GoTo▲
Renvoie un objet Range qui représente la position de début de l'élément spécifié comme une page, un signet ou un champ.
Activedocument.GoTo What:= , Which:= , Count:= , Name:=| Paramètres | Valeurs |
|---|---|
| What | wdGoToBookmark wdGoToComment wdGoToEndnote wdGoToEquation wdGoToField wdGoToFootnote wdGoToGrammaticalError wdGoToGraphic wdGoToHeading wdGoToLine wdGoToObject wdGoToPage wdGoToPercent wdGoToProofreadingError wdGoToSection wdGoToSpellingError wdGoToTable |
| which | wdGoToAbsolute wdGoToFirst wdGoToLast wdGoToNext wdGoToPrevious wdGoToRelative |
| Count | |
| Name |
3-A-2-q. Post▲
Publie le document spécifié dans un dossier public de Microsoft Exchange
ActiveDocument.PostCe code ouvre une boîte de dialogue vous demandant de spécifier le dossier de publication. il est nécessaire d'avoir les droits en écriture sur ce dossier pour que la manipulation réussisse.
3-A-2-r. PresentIt▲
Ouvre une présentation avec le contenu du document.
ActiveDocument.PresentItPour obtenir une présentation convenable vous devez avoir un document avec une structure hiérachique.
3-A-2-s. PrintOut▲
Imprime le document en tout ou en partie en fonction des paramètres passé à la fonction.
ActiveDocument.PrintOut Background:= , Append:=, Range:=,OutputFileName:=,From:=,To:=,Item:=,Copie:=,Page:=,PageType:=,PrintToFile:=, _
Collate:=, ActivePrinterMacGX:=,ManualDuplexPrint:=,PrintZoomColumn:=,PrintZoomRow:=,PrintZoomPaperWidth:=,PrintZoomPaperHeight:=| Paramètres | Valeurs | Résultats |
|---|---|---|
| BackGround | True or False | L'exécution de la macro continue pendant l'impression du document. |
| Append | True or False | True : pour ajouter le document spécifié au nom de fichier indiqué par l'argument NomFichierSortie, False : pour remplacer le nom de fichier spécifié par l'argument NomFichierSortie. |
| Range | wdPrintRangeOfPages | Étendue de pages. |
| OutpuFileName | NomDeFichier | Uniquement si PrintToFile est True |
| From | Nombre | Page de début |
| To | Nombre | Page de fin |
| Item | wdPrintDocumentContent | |
| Copie | Nombre | Nombre de pages à imprimer |
| Page | Nombre | Numéro de page à imprimer, Range et Item sont à renseigner. |
| PageType | WdPrintOutPages | |
| PrintToFile | True or False | Impression dans un fichier |
| Collate | True or False | True : Imprime les documents un à la fois, False, les pages unes à unes |
| ActivePrinterMacGX | option pour MAC | |
| ManualDuplexPrint | True or False | Permet d'imprimer en recto verso si l'imprimante ne le permet pas. |
3-A-2-t. PrintPreview▲
Affiche le document en apperçu avant impression.
ActiveDocument.PrintPreview3-A-2-u. Protect▲
Methode qui permet d'active la protection d'un document. Lors de l'activation de la protection, la méthode de protection sera définie.
ActiveDocument.Protect WdProtectionType:=wdAllowOnlyFormFields, Password:="MotDePasse"- wdAllowOnlyComments
- wdAllowOnlyFormFields
- wdAllowOnlyReading
- wdAllowOnlyRevisions
- wdNoProtection
3-A-2-v. Range▲
Renvoie un objet Range en utilisant les positions spécifiées des caractères de début et de fin.
Sub testRange()
ActiveDocument.Range(Start:=0, End:=10).Select
With Selection
.Font.Bold = True
.Font.Size = 20
End With
End SubLe code ci-dessus va définir un objet range qui va commencer devant le premier caractère du texte et finir dérrière le dixième caractère pour ensuite les mettre en gras et avec ue taille de 20 points.
3-A-2-w. RemoveDocumentInformation▲
Ajoutée avec la version 2007, cette méthode permet d'enlever du document toutes les informations.
ActiveDocument.RemoveDocumentInformation (wdRDIAll)- wdRDIAll
- wdRDIComments
- wdRDIContentType
- wdRDIDocumentManagementPolicy
- wdRDIDocumentProperties
- wdRDIDocumentServerProperties
- wdRDIDocumentWorkSpace
3-A-2-x. ResetFormFields▲
Efface le contenu de tous les champs de formulaire d'un document afin que vous puissiez remplir le formulaire de nouveau.
Sub ClearFormFields()
If ActiveDocument.ProtectionType <> wdAllowOnlyFormFields Then ActiveDocument.Protect Type:=wdAllowOnlyFormFields
ActiveDocument.Unprotect
ActiveDocument.ResetFormFields
ActiveDocument.Protect Type:=wdAllowOnlyFormFields
End Sub3-A-2-y. RunLetterWizard▲
Démarre l'Assistant Courrier pour le document spécifié.
Public Sub LettreAssistant()
Dim myContent As LetterContent
Set myContent = New LetterContent
With myContent
.Subject = "Sujet de ma lettre"
.Salutation = "Hello"
.SalutationType = wdSalutationOther
.SenderName = Application.UserName
.SenderInitials = Application.UserInitials
End With
Documents.Add.RunLetterWizard LetterContent:=myContent, WizardMode:=True
End SubVoici le résultat, l'ouverture de l'assistant.
3-A-2-z. Save▲
Enregistre les documents de la collection document.
ActiveDocument.Save NoPrompt:=True, OriginalFormat:=wdOriginalDocumentFormatDocuments.Save NoPrompt:=True, OriginalFormat:=wdOriginalDocumentFormatCe code va aussi fonctionner.
Documents.Save Noprompt:=True, OriginalFormat:=wdPromptUser- wdOriginalDocumentFormat
- wdPromptUser
- wdWordDocument
On peut aussi faire un test afin de déterminer l'état de sauvegarde du document. On va faire appel à la propriété Saved si elle est à True, le document n'a pas besoin d'être sauvegardé.
If Not ActiveDocument.Saved Then Documents.Save Noprompt:=False, OriginalFormat:=wdOriginalDocumentFormat3-A-2-aa. SaveAs▲
Enregistre le document spécifié sous un nouveau nom ou format. Certains arguments utilisés pour cette méthode correspondent aux options de la boîte de dialogue
ActiveDocument.SaveAs FileName:=, FileFormat:=, LockComments:=,Password:=, AddToRecentFiles:=,WritePassword:=,ReadOnlyRecommended, _
EmbedTrueTypeFonts:=,SaveNativePictureFormat:=,SaveFormsData:=,SaveAsOCELetter:=, Encoding:=,InsertLineBreaks:=,AllowSubstitutions:=, _
LineEnding:=, AddBiDiMarks:=| Arguments | Valeurs | Résultat |
|---|---|---|
| FileName | Nom de fichier, peut aussi contenir le chemin | |
| FileFormat | WdSaveFormat | wdFormatDocumentDefault -> .docx wdFormatDocument -> .doc wdFormatRTF -> .rft wdFormatXML -> .xml |
| LockComments | True ou False | Verrouille les commentaires |
| Password | Chaîne de caractères | Microsoft déconseille l'utilisation des mots de passe sur vos documents. |
| AddToRecentFiles | True ou False | Ajout du fichier dans la liste des documents récents |
| WritePassword | Cahîne de caractères | Microsoft déconseille l'utilisation des mots de passe sur vos documents. |
| ReadOnlyRecommended | True ou False | |
| EmbedTrueTypeFonts | True ou EmbedTrueTypeFonts | Permet d'enregistrer les polices de caractères avec le document. Nécessaire si vous distrbuez votre document |
| SaveNativePictureFormat | True ou False | True permet de convertir les fichiers en format compatibles Windows |
| SaveFormsData | True ou False | Permet l'enregistrement des données de Formulaire comme un enregistrement. |
| SaveAsOCELetter | Valable si l document possède un bordereau de routage. | |
| Encoding | MSOEncoding | msoEncodingUTF8 D'autre encodeage sont disponibles. |
| InsertLineBreaks | True ou False | Ajoute un saut de ligne si votre document est enregistré au format texte. |
| AllowSubstitutions | True ou False | Autorise la substitution de certains caractères par des équivalents lorsque le document est sauvegardé en format texte. |
| LineEnding | wdCRLF ou wdCROnly | Indique la manière dont Word marque les sauts de ligne et de paragraphe dans les documents enregistrés sous forme de fichiers texte |
| AddBiDiMarks | True |
Il est nécessaire d'avoir une certaine cohésion, il est déconseillé de donner une extension au fichier .rtf et de mettre comme format de sauvegarde wdFormatDocument. On se retrouve avec une incompatibilité.
Sub SaveAsRTF()
ActiveDocument.SaveAs FileName:="Text.rtf", _
FileFormat:=wdFormatRTF
End Sub3-A-2-ab. Select▲
Sélectionne le contenu du document spécifié.
ActiveDocument.SelectOu encore :
Documents(1).SelectLa méthode Select peut s'appliquer à beaucoup de collections et objets. On manipule l'objet renvoyé par Select avec la Selection.
ActiveDocument.Sentences(2).Selectreprésentera la seconde phrase du document.
With Selection
.Font.Size = 20
.Font.Bold = True
End Withappliquera les modifiction à la selection, donc la seconde phrase de notre document.
3-A-2-ac. SendMail▲
Permet l'envoi de votre document en tant que pièce jointe d'un message.
Avec l'option SendMailAttach, il est toutefois possible de spécifier le mode d'envoi du document,
soit en pièce jointe, soit en corps de message.
Options.SendMailAttach = True
ActiveDocument.SendMAil3-A-2-ad. Undo▲
Annule la dernière action ou une séquence d'actions affichées dans la liste Annuler. Cette méthode renvoie la valeur True si les actions ont été annulées avec succès. Cette méthode a le même effet que Ctrl + Z.
ActiveDocument.Undo 10Ce code va annuler les dix dernières actions, et ci-dessous aficher dans la barre des tâches si l'opération a été un succès.
If ActiveDocument.Undo = False Then _
StatusBar = "Annulation réussie"3-A-2-ae. UndoClear▲
Méthode qui va effacer la liste des annulations dans la liste. Si vous désirez empêcher l'utilisateur de supprimer les actions effectuées par votre code, cette méthode devient intéressante.
ActiveDocument.UndoClear3-A-2-af. UnProtect▲
Nous avons vu plus tôt dans ce document comment mettre une protection, cette méthode fait le contraire, elle va supprimer la protection de votre document.
Le principe est identique :
ActiveDocument.Protect "MotDePasse"3-A-3. Évènements▲
3-A-3-a. Close▲
Évènement qui se produit lors de la fermeture d'un document.
Private Sub Document_Close()
ActiveDocument.Save
End Sub3-A-3-b. New▲
Évènement qui se produit lors de la création d'un nouveau document. Cette procédure peut être stockée dans un modèle ou dans un document déjà ouvert.
Private Sub Document_New()
End Sub3-A-3-c. Open▲
Procédure qui est éxécutée lors de l'ouverture d'un document. Cette procédure peut être stockée dans le document à ouvrir ou dans un document déjà ouvert.
Private Sub Document_Open()
End Sub3-B. Propriétés▲
Dans les propriétés, on retrouve Count, Parent, Application et Creator. Nous n'allons pas les explorer.
3-C. Méthodes▲
Les méthodes sont plus intéressantes, c'est graces aux méthodes que nous allons pouvoir Ouvrir, Ajouter,...
3-C-1. Add▲
De toutes les méthodes, je trouve qu'elle est la plus intéressante et la plus importante. C'est une question d'opinion.
Renvoie un objet Document qui représente un nouveau document vide ajouté à la collection des documents ouverts.
Documents.Add Template:= , NewTemplate:= ,DocumentType:= , Visible:=- Template:=
- NewTemplate:=
- DocumentType:=
- Visible:=
| Paramètre | Valeur | Résultat |
|---|---|---|
| Template:= | chemin à utiliser pour le modèle | Par défaut, c'est le normal qui est utilisé |
| NewTemplate:= | True or False | Création d'un nouveau modèle, par défaut la valeur est False |
| DocumentType:= | WdNewDocumentType | La constante par défaut est wdNewBlankDocument |
| Visible:= | True ou False | Affiche ou cache le document. Ce n'est pas le document qui est caché, mais la fénêtre qui le contient. |
Public Sub AjoutNouveauDoc()
Dim i As Integer
i = Documents.Count
Select Case i
Case 0
'Pas de document ouvert, on va en créer un
Documents.Add Template:="F:\Documents and Settings\Olivier\Application Data\Microsoft\Templates\Olivier.Dotm", _
NewTemplate:=False, DocumentType:=wdNewBlankDocument, Visible:=True
Case Else
MsgBox "Vous avez au moins un document ouvert"
End Select
End Sub3-C-2. Close▲
Ferme les documents spécifiés. Si rien n'est spécifié, tous les documents sont fermés.
3-C-3. Open▲
La méthode Open permet d'ouvrir un document existant et l'ajoute à la Collection Documents.
Documents.Open (FileName:="" , ConfirmConversions:= , ReadOnly:= , AddToRecentFiles:= ,PasswordDocument:= ,PasswordTemplate:= ,revert:=, _
WritePassworddocument:= ,WritePasswordTemplate:= ,Format:= ,Encoding:=, Visible:=, OpenAndRepair:= ,DocumentDirection:=, _
NoEncodingDialog:= ,XmlTransform:= )Voilà tous les arguments que la méthode supporte. Un argument qui me semble intéressant est "OpenAndRepair", cet argument s'il est spécifié permet de réparer un document endomagé.
Sub OpenDocu()
Documents.Open FileName:="F:\Documents and Settings\Olivier\Mes documents\Word\TutoVBA\doc1.docm"
End SubL'argument FileName coontient le nom du fichier, mais aussi son chemin.
3-C-4. Save▲
Cette méthode va sauvegarder en une opération tous les documents Ouverts.
Documents.Save Noprompt:=, OriginalFormat:=Si la valeur de l'argument NoPrompt est à True, la sauvegarde se passera sans afficher de boîte de dialogue. Si dans la collection un document ne possède pas de nom, l'utilisateur sera quand même invité à lui donner un nom.
- wdOriginalDocumentFormat => Garde le format d'origine du document
- wdPromptUser => pose la question à l'utilisateur Si vous utilisez True pour l'argument NoPrompt, l'invitation ne fonctionne pas.
- wdWordDocument => Format Word par défaut.














