Débutez en VBA Word
Date de publication : 25 janvier 2009
Par
Olivier Lebeau (Heureux-oli sur DVP)
1. Introduction
2. L'objet Application Word
3. Les documents
4. Range et Selection
5. Les paragraphes
6. Les tableaux
7. Les signets
8. Les champs
8-A. Méthodes
8-A-1. Add
8-A-2. ToggleShowCodes
8-A-3. Update
8-A-4. Unlink
8-B. Propriétés
8-B-1. Code
8-B-2. ShowCodes
8-B-3. Count
9. Les formulaires
10. Les images et autres objets graphiques
11. Les objets Range et Selection
12. Les en-têtes et les pieds de page
13. Solutions
14. Exercice complet : une application de gestion de courrier
15. Liens Utiles
16. Remerciements
1. Introduction
2. L'objet Application Word
3. Les documents
4. Range et Selection
5. Les paragraphes
6. Les tableaux
7. Les signets
8. Les champs
Il est plus courant d'utiliser les champs au travers de l'interface graphique, mais heureusement, leur utilisation est
également possible dans votre code. L'utilisation des champs au travers de l'interface graphique est décrite détaillée dans
ce tutoriel :
Découvrez les champs et leurs applications sous Word.
Les champs les plus utilisés sont les champs de fusion et de publipostage, les champs contenant des images ou du texte, les champs
relatifs aux propriétés du document et les champs relatifs aux tables et index.
 |
Si vous utilisez un chemin dans vos champs, Word ne les prend en comptes que si les "\" sont doublés.
Ex : C:\Temp\a.docm devient C:\\Temp\\a.docm
|
Insertion d'une image |
Sub insereruneimage ()
ActiveDocument. Fields . Add Range:= Selection. Range , _
Type:= wdFieldIncludePicture, Text:= " C:\\Temp\\a.jpg "
End Sub
|
L'insertion d'un champ se fait par l'utilisation de la méthode Add, on passe à cette méthode quatre arguments,
Range : l'endroit où sera inséré le champ
Type : constante Word déterminant le type de champ inséré
Text : Le texte qui sera utilisé pour le champ.
PreserveFormatting : Conserve ou non le format
Insertion le nom de l'utilisateur |
Sub InsererNomUtilisateur ()
ActiveDocument. Fields . Add Range:= Selection. Range , Type:= wdFieldEmpty, Text:= _
" USERNAME " , PreserveFormatting:= True
End Sub
|
Dans le cas du nom de l'utilisateur, si vous ne mettez rien, c'est le nom d'utilisateur de la suite
Office qui est utilisé. Vous pouvez imposer un autre nom.
Sub InsereNomUtilisateur ()
ActiveDocument. Fields . Add Range:= Selection. Range , Type:= wdFieldEmpty, Text:= _
" USERNAME Olivier \* Caps " , PreserveFormatting:= True
End Sub
|
En changeant le type de champ, vous pouvez insérer la date du jour.
Insertion de la date du jour |
Sub AjouterDate ()
ActiveDocument. Fields . Add Range:= Selection. Range , Type:= wdFieldDate
End Sub
|
Nous venons de voir comment ajouter un champ et le "code" qu'il contient, nous pouvons
aussi faire la manipulation inverse, pour chaque champ récupère son code.
Sub RecupererCode ()
Dim oFld As Field
For Each oFld In ActiveDocument. Fields
Debug. Print oFld. Code
Next oFld
End Sub
|
8-A. Méthodes
8-A-1. Add
Nous avons déjà utilisé cette méthode, elle permet l'ajout d'un champ à la collection des champs du
document. Nous avons également vu que cette méthode peut recevoir jusqu'à 4 arguments.
Voici la liste des valeurs que peut prendre l'argument Type.
Nom |
Description |
wdFieldAddin |
Champ de complément. Non disponible dans la boîte de dialogue Champ. Utilisé pour stocker les données cachées dans l'interface utilisateur. |
wdFieldAddressBlock |
Champ AddressBlock. |
wdFieldAdvance |
Champ Advance. |
wdFieldAsk |
Champ Ask. |
wdFieldAuthor |
Champ Author. |
wdFieldAutoNum |
Champ AutoNum. |
wdFieldAutoNumLegal |
Champ AutoNumLgl. |
wdFieldAutoNumOutline |
Champ AutoNumOut. |
wdFieldAutoText |
Champ AutoText. |
wdFieldAutoTextList |
Champ AutoTextList. |
wdFieldBarCode |
Champ BarCode. |
wdFieldBidiOutline |
Champ BidiOutline. |
wdFieldComments |
Champ Comments. |
wdFieldCompare |
Champ Compare. |
wdFieldCreateDate |
Champ CreateDate. |
wdFieldData |
Champ Data. |
wdFieldDatabase |
Champ Database. |
wdFieldDate |
Champ Date. |
wdFieldDDE |
Champ DDE. Non disponible dans la boîte de dialogue Champ, mais pris en charge pour les documents créés dans les versions précédentes de Word. |
wdFieldDDEAuto |
Champ DDEAuto. Non disponible dans la boîte de dialogue Champ, mais pris en charge pour les documents créés dans les versions précédentes de Word. |
wdFieldDocProperty |
Champ DocProperty. |
wdFieldDocVariable |
Champ DocVariable. |
wdFieldEditTime |
Champ EditTime. |
wdFieldEmbed |
Champ Embedded. |
wdFieldEmpty |
Champ Empty. Agit comme un espace réservé pour les contenus de champ qui ne sont pas encore ajoutés. Un champ ajouté en utilisant le raccourci Ctrl+F9 dans l'interface utilisateur est un champ Empty. |
wdFieldExpression |
Champ = (Formule). |
wdFieldFileName |
Champ FileName. |
wdFieldFileSize |
Champ FileSize field. |
wdFieldFillIn |
Champ Fill-In. |
wdFieldFootnoteRef |
Champ FootnoteRef. Non disponible dans la boîte de dialogue Champ. Inséré par programmation ou en mode interactif. |
wdFieldFormCheckBox |
Champ FormCheckBox. |
wdFieldFormDropDown |
Champ FormDropDown. |
wdFieldFormTextInput |
Champ FormText. |
wdFieldFormula |
Champ EQ (Equation). |
wdFieldGoToButton |
Champ GoToButton. |
wdFieldGreetingLine |
Champ GreetingLine. |
wdFieldHyperlink |
Champ Hyperlink. |
wdFieldIf |
Champ If. |
wdFieldImport |
Champ Import. Ne peut pas être ajouté dans la boîte de dialogue Champ, mais peut être ajouté en mode interactif ou par programmation (rédaction de code). |
wdFieldInclude |
Champ Include. Ne peut pas être ajouté dans la boîte de dialogue Champ, mais peut être ajouté en mode interactif ou par programmation (rédaction de code). |
wdFieldIncludePicture |
Champ IncludePicture. |
wdFieldIncludeText |
Champ IncludeText. |
wdFieldIndex |
Champ Index. |
wdFieldIndexEntry |
Champ XE (Index Entry). |
wdFieldInfo |
Champ Info. |
wdFieldKeyWord |
Champ Keywords. |
wdFieldLastSavedBy |
Champ LastSavedBy. |
wdFieldLink |
Champ Link. |
wdFieldListNum |
Champ ListNum. |
wdFieldMacroButton |
Champ MacroButton. |
wdFieldMergeField |
Champ MergeField. |
wdFieldMergeRec |
Champ MergeRec. |
wdFieldMergeSeq |
Champ MergeSeq. |
wdFieldNext |
Champ Next. |
wdFieldNextIf |
Champ NextIf. |
wdFieldNoteRef |
Champ NoteRef. |
wdFieldNumChars |
NumChars. |
wdFieldNumPages |
Champ NumPages. |
wdFieldNumWords |
Champ NumWords. |
wdFieldOCX |
Champ OCX. Ne peut pas être ajouté dans la boîte de dialogue Champ, mais peut être ajouté par programmation (rédaction de code), par le biais de la méthode AddOLEControl de la collection Shapes ou de la collection InlineShapes. |
wdFieldPage |
Champ Page. |
wdFieldPageRef |
Champ PageRef. |
wdFieldPrint |
Champ Print. |
wdFieldPrintDate |
Champ PrintDate. |
wdFieldPrivate |
Champ Private. |
wdFieldQuote |
Champ Quote. |
wdFieldRef |
Champ Ref. |
wdFieldRefDoc |
Champ RD (Reference Document). |
wdFieldRevisionNum |
Champ RevNum. |
wdFieldSaveDate |
Champ SaveDate. |
wdFieldSection |
Champ Section. |
wdFieldSectionPages |
Champ SectionPages |
wdFieldSequence |
Champ Seq (Sequence). |
wdFieldSet |
Champ Set. |
wdFieldShape |
Champ Shape. Créé automatiquement pour les images dessinées. |
wdFieldSkipIf |
Champ SkipIf. |
wdFieldStyleRef |
Champ StyleRef. |
wdFieldSubject |
Champ Subject. |
wdFieldSymbol |
Champ Symbol. |
wdFieldTemplate |
Champ Template. |
wdFieldTime |
Champ Time. |
wdFieldTitle |
Champ Title. |
wdFieldTOA |
Champ TOA (Table of Authorities). |
wdFieldTOAEntry |
Champ TOA (Entrée dans la table des références). |
wdFieldTOC |
Champ TOC (Table of Contents). |
wdFieldTOCEntry |
Champ TOC (Entrée dans la table des matières). |
wdFieldUserAddress |
Champ UserAddress. |
wdFieldUserInitials |
Champ UserInitials. |
wdFieldUserName |
Champ UserName. |
wdFieldBibliography |
Champ Bibliography. |
wdFieldCitation |
Champ Citation. |
Cet exemple montre comment ajouter un champ date à votre document :
Sub AjouterChampDate ()
ActiveDocument. Fields . Add Range:= Selection. Range , Type:= wdFieldDate
End Sub
|
8-A-2. ToggleShowCodes
Cette méthode correspond à la combinaison de touches Shift + F9, elle permet l'affichage des codes de champ.
Selection. Fields . ToggleShowCodes
|
8-A-3. Update
Lorsque vous utilisez cette méthode, vous mettez à jour le ou les champs du document.
Mise à jour d'un champ |
ActiveDocument. Fields (1 ). Update
|
Mise à jour de tous les champs |
ActiveDocument. Fields . Update
|
L'utilisation de cette méthode renvoie un Long, si la valeur renvoyée est 0, c'est que la mise
à jour s'est correctement déroulée, si la mise à jour à généré une erreur, le nombre renvoyé correspond
à l'index du premier champ qui pose problème.
If ActiveDocument. Fields . Update = 0 Then
MsgBox " La mise à jour s'est correctement déroulée "
Else
MsgBox " Le champ " & ActiveDocument. Fields . Update & _
" a généré une erreur "
End If
|
8-A-4. Unlink
Cette méthode permet dans certains cas de briser le lien entre le champ la source et de remplacer
le champ par sa valeur la plus récente.
ActiveDocument. Fields (1 ). Unlink
|
Cette méthode peut-être appliquée à la collection.
ActiveDocument. Fields . Unlink
|
Dans ce cas, tous les champs seront remplacés.
8-B. Propriétés
8-B-1. Code
Cette propriété renvoie le code du champ. Elle est en lecture-écriture. C'est donc grâce à cette propriété que vous pourrez
récupérer les codes d'un champ ou encore en modifier le code.
Nous avons vu comment ajouter un champ date.
Sub AjouterChampDate ()
ActiveDocument. Fields . Add Range:= Selection. Range , Type:= wdFieldDate
End Sub
|
Nous allons modifier ce champ pour lui ajouter un masque.
Sub AjouterMasque ()
Dim stChamp As String
Dim oFld As Field
Dim intI As Integer
Dim stContent () As String
Set oFld = ActiveDocument. Fields (1 )
stChamp = oFld. Code
If oFld. Type = wdFieldDate Then
stContent = Split (stChamp, " \ " )
Debug. Print LBound (stContent)
stChamp = " "
End If
For intI = 0 To UBound (stContent)
Debug. Print stContent (intI)
If intI = 1 Then stChamp = stChamp & " @ " & Chr (34 ) & " dddd dd/MM/yyyy " & Chr (34 ) & " \ "
If intI = UBound (stContent) Then
stChamp = stChamp & stContent (intI)
Else
stChamp = stChamp & stContent (intI) & " \ "
End If
Next intI
Debug. Print stChamp
oFld. Code . Text = stChamp
oFld. Update
End Sub
|
8-B-2. ShowCodes
Alors que ToggleShowCode bascule l'affichage du code tous les champs, ShowCodes permet de ne le faire que pour un seul
champ.
ActiveDocument. Fields (1 ). ShowCodes = True
|
8-B-3. Count
Les Fields formant une collection, Count permet de connaitre leur nombre.
ActiveDocument. Fields . Count
|
9. Les formulaires
10. Les images et autres objets graphiques
11. Les objets Range et Selection
12. Les en-têtes et les pieds de page
13. Solutions
14. Exercice complet : une application de gestion de courrier
15. Liens Utiles
16. Remerciements


Copyright © 2009 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.