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
Sub
Le 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
Sub
Le 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
Sub
Pour 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
With
Il 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
Sub
Les 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"
; myRange
Le 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
Sub
3-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
Sub
On peut aussi modifier les BuiltInProperties.
Sub
changeProperties
(
)
ActiveDocument.BuiltInDocumentProperties
(
wdPropertySubject) =
"Le sujet à traiter"
End
Sub
3-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.Count
3-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
Sub
Ce 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
Sub
La 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
Sub
Les 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.Text
Ne va renvoyer que le texte contenu dans le premier pied de page.
Debug.Print
ActiveDocument.Content.Text
3-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
Sub
3-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
Sub
Ce 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
Sub
Ajout d'un champ
ActiveDocument.Fields.Add
Range:=
Selection.Range
, Type
:=
wdFieldAuthor
Comment 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
Sub
Il 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
Sub
3-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
:=
wdFieldFormCheckBox
ActiveDocument.FormFields
(
"CaseACocher1"
).CheckBox.Value
=
True
Dans 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
Sub
3-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
Sub
3-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
Sub
3-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
Sub
3-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
Sub
Mais 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
Sub
On 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
Sub
Si 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
Sub
3-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
).ConvertToInlineShape
ActiveDocument.InlineShapes
(
1
).ConvertToShape
On 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
Sub
3-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
Sub
Pour 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
Sub
Mé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
Sub
3-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
Sub
ActiveDocument.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
Sub
Le 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
para
3-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
Sub
Mais 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
=
True
3-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
=
20
3-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
Sub
Le 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
=
wdPrinterManualFeed
Vous 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 'wdOrientPortrait
3-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
Sub
3-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.Path
En 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.FullName
3-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.PrintOut
3-A-1-ai. PrintRevisions▲
Cette prorpiété lorsqu'elle est à True imprime les marques de révision d'un document.
ActiveDocument.PrintRevisions
=
False
3-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
Sub
La syntaxe est ActiveDocument.Protect Type:=wdAllowOnlyReading, Noreset:= ,Password:="Password"
Sub
DeverrFormu
(
)
ActiveDocument.Protect
Type
:=
wdNoProtection
End
Sub
ActiveDocument.Unprotect
On obtient le type de protection :
If
ActiveDocument.ProtectionType
=
wdNoProtection Then
MsgBox
"Le document n'est pas protégé !"
End
If
3-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
=
True
3-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
=
True
Ce 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
=
True
3-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
Sub
Ce 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
Sub
Avec 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
Sub
Ce 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
Sub
Il est possible de modifier les attributs d'un style lors de son utilisation.
ActiveDocument.Styles
(
wdStyleHeading1).Font.Bold
=
False
Il 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
Sub
Le 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
Sub
3-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
Sub
Pour 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
Sub
3-A-2. Méthodes▲
3-A-2-a. AcceptAllRevisions▲
Methode qui permet d'accepter toutes les modifictions du document spécifié.
ActiveDocument.AcceptAllRevisions
On peut associer cette méthode à la suivante qui accepte les modifications affichées.
ActiveDocument.AcceptAllRevisionsShown
3-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
Sub
Tenter 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
'CheckSpelling
3-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:=
wdWordDocument
3-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
Sub
La 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:=
True
3-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"
).Convert
3-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.ConvertNumbersToText
3-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
Sub
Dans 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.DowngradeDocument
3-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.FitToPages
3-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.Post
Ce 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.PresentIt
Pour 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.PrintPreview
3-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
Sub
Le 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
Sub
3-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
Sub
Voici 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:=
wdOriginalDocumentFormat
Documents.Save
NoPrompt:=
True
, OriginalFormat:=
wdOriginalDocumentFormat
Ce 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:=
wdOriginalDocumentFormat
3-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
Sub
3-A-2-ab. Select▲
Sélectionne le contenu du document spécifié.
ActiveDocument.Select
Ou encore :
Documents
(
1
).Select
La méthode Select peut s'appliquer à beaucoup de collections et objets. On manipule l'objet renvoyé par Select avec la Selection.
ActiveDocument.Sentences
(
2
).Select
représentera la seconde phrase du document.
With
Selection
.Font.Size
=
20
.Font.Bold
=
True
End
With
appliquera 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.SendMAil
3-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
10
Ce 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.UndoClear
3-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
Sub
3-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
Sub
3-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
Sub
3-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
Sub
3-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
Sub
L'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.