IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Aller plus loin avec Word


précédentsommairesuivant

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.
Ajouter un document
Sélectionnez
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.

Sauvegarde
Sélectionnez
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.

 
Sélectionnez
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.

Remplissage coloré
Sélectionnez
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.

Remplissage Image
Sélectionnez
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.

Image non disponible
 
Sélectionnez
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
 
Sélectionnez
<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.

BookMarks
Sélectionnez
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é !

Ajout de signets
Sélectionnez
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.

Insérer du texte
Sélectionnez
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é.

Liste des propriétés du document
Sélectionnez
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.

Modification d'un propriété
Sélectionnez
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.

 
Sélectionnez
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.

XMLChildNodeSuggestion
Sélectionnez
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.

Image non disponible
Image non disponible

Ce que nous possédons.
Ajout d'un Node Parent.

Image non disponible

Après Ajout.

Image non disponible

On exécute la procédure

Image non disponible

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".

Edition d'un commentaire
Sélectionnez
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.

 
Sélectionnez
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.

Contenu du document
Sélectionnez
Dim hs As Range
Set hs = ActiveDocument.StoryRanges(wdPrimaryFooterStory)
Debug.Print hs.Text
Image non disponible

Ne va renvoyer que le texte contenu dans le premier pied de page.

Contenu principal du document
Sélectionnez
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.

Insertion d'un Contrôle de contenu
Sélectionnez
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
Image non disponible
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.

Intervale de tabulation
Sélectionnez
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".

Note de fin
Sélectionnez
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.

Mise à jour des champs
Sélectionnez
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.

Liste et valeur des champs
Sélectionnez
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

 
Sélectionnez
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.

 
Sélectionnez
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.

Insertion de note bas de page
Sélectionnez
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.

Image non disponible

Ils sont accessibles par signets. Lors de leur création, Word leur attribue un signet.
Les signets sont TexteX, CaseACocherX et ListeDéroulanteX.

Ajout d'un contrôle Formulaire
Sélectionnez
ActiveDocument.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormCheckBox
Cocher une Case à Cocher
Sélectionnez
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.

En mode création
Sélectionnez
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.

Image non disponible
Un cadre
Ajout d'un Frame
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

Insérer un index
Sélectionnez
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.

Avec Fichier de concordances
Sélectionnez
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.

Toutes les entrées d'un mot
Sélectionnez
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.

 
Sélectionnez
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.

Image non disponible
Objet Shape
Image non disponible
Objet InLineShape

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.

Image non disponible
Objet Shapes qui devient InLineShape
Avec un boîte de sélection
Sélectionnez
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.

Dans un sens
Sélectionnez
ActiveDocument.Shapes(1).ConvertToInlineShape
Ou dans l'autre
Sélectionnez
ActiveDocument.InlineShapes(1).ConvertToShape

On peut aussi ajouter un objet Shape.

 
Sélectionnez
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.

Numérotation des lignes
Sélectionnez
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.

Liste
Sélectionnez
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.

Ajout d'éléments à une liste
Sélectionnez
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 :

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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
Image non disponible

Avec : objRange.Text = "Cercle = ((Beta.l)/(Beta.Pi))" on obtient ceci :

Image non disponible
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.

 
Sélectionnez
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.

Impression en livret
Sélectionnez
.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.

Nombre de caractères par ligne
Sélectionnez
.CharsLine = 20
3-A-1-af-iii. DifferentFirstPageHeaderFooter

Cette propriété permet de générer une première page différente.

Première page différente
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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 :

Protection de Formulaire
Sélectionnez
Sub ProtectFormu()
ActiveDocument.Protect Type:=wdAllowOnlyFormFields
End Sub

La syntaxe est ActiveDocument.Protect Type:=wdAllowOnlyReading, Noreset:= ,Password:="Password"

Supprimer la protection
Sélectionnez
Sub DeverrFormu()
ActiveDocument.Protect Type:=wdNoProtection

End Sub
Ou encore
Sélectionnez
ActiveDocument.Unprotect

On obtient le type de protection :

 
Sélectionnez
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.

Suppression d'informations
Sélectionnez
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é.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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 :

Image non disponible
Le nouveau Style est disponible
3-A-1-aq. TablesOfContents (TOC)

Renvoie une collection TablesOfContents qui représente les tables des matières contenues dans le document spécifié.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
ActiveDocument.Variables.Add Name:="maVariable"

Lorsque la variable est ajoutée au document, on peut lui affecter une valeur.

 
Sélectionnez
ActiveDocument.Variables("maVariable").Value:="La Valeur"

On peut le faire en une seule opération :

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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é.

 
Sélectionnez
ActiveDocument.AcceptAllRevisions

On peut associer cette méthode à la suivante qui accepte les modifications affichées.

 
Sélectionnez
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.

Activer un document
Sélectionnez
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.

Thèmes de document
Sélectionnez
ActiveDocument.ApplyDocumentTheme "f:\Program Files\Microsoft Office\Document Themes 12\Aspect.thmx"
Image non disponible
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.

Appliquer un jeu de style rapide
Sélectionnez
ActiveDocument.ApplyQuickStyleSet ("Moderne")
Image non disponible
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

 
Sélectionnez
ActiveDocument.ApplyTheme "Compass 111"
Image non disponible
 
Sélectionnez
ActiveDocument.ApplyTheme "Compass 110"
Image non disponible

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.

Image non disponible
Les répertoires contenant les thèmes
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.

 
Sélectionnez
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  
 
Sélectionnez
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é.

Comparaison de documents
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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é.

Conversion de la numérotation de paragraphe en texte.
Sélectionnez
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.

 
Sélectionnez
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.

Un DataForm
Sélectionnez
ActiveDocument.DataForm
Image non disponible

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.

Ouverture d'un Dataform
Sélectionnez
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,

Conversion d'un document pour une version antérieure de Word
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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

 
Sélectionnez
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.

Image non disponible
Dossier Exchange
3-A-2-r. PresentIt

Ouvre une présentation avec le contenu du document.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
ActiveDocument.Protect WdProtectionType:=wdAllowOnlyFormFields, Password:="MotDePasse"
WdProtectionType
  • 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.

 
Sélectionnez
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.

 
Sélectionnez
ActiveDocument.RemoveDocumentInformation (wdRDIAll)
Prarmètres
  • 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.

 
Sélectionnez
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é.

 
Sélectionnez
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.

Image non disponible
3-A-2-z. Save

Enregistre les documents de la collection document.

Enregistrement du document en cours
Sélectionnez
ActiveDocument.Save NoPrompt:=True, OriginalFormat:=wdOriginalDocumentFormat
Enregistrement de tous les documents ouverts
Sélectionnez
Documents.Save NoPrompt:=True, OriginalFormat:=wdOriginalDocumentFormat

Ce code va aussi fonctionner.

Avec une invite
Sélectionnez
Documents.Save Noprompt:=True, OriginalFormat:=wdPromptUser
WdOriginalFormat
  • 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é.

 
Sélectionnez
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

 
Sélectionnez
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é.

 
Sélectionnez
Sub SaveAsRTF()
    ActiveDocument.SaveAs FileName:="Text.rtf", _
        FileFormat:=wdFormatRTF
End Sub
3-A-2-ab. Select

Sélectionne le contenu du document spécifié.

 
Sélectionnez
ActiveDocument.Select

Ou encore :

 
Sélectionnez
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.

 
Sélectionnez
ActiveDocument.Sentences(2).Select

représentera la seconde phrase du document.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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 :

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.
 
Sélectionnez
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.

 
Sélectionnez
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é.

 
Sélectionnez
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.

 
Sélectionnez
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.

wdOriginalFormat
  • 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.

précédentsommairesuivant

Copyright © 2007 Olivier Lebeau. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.