Lister les champs de fusion présent sur un document

fyl66 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 1 juin 2009 - 1 août 2008 à 15:36
fyl66 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 1 juin 2009 - 3 août 2008 à 17:16
Bonjour,

Je souhaite lister les champs de fusion présents dans un document word depuis une macro.
Je code l'instruction suivante:

ii = ActiveDocument.MailMerge.Fields.Count
for jj = 1 to ii
   msgbox (ActiveDocument.MailMerge.Fields(ii).code)
next

Cela marche bien: j'arrive en effet à récupérer le nom des champs. Mais uniquement ceux présents dans le corps principal du document.
En effet, je ne récupère pas les champs éventuellement présents dans l'entête et pied de page ainsi que ceux confinés dans des zones de texte.
Quel code dois-je envisager afin de récupérer TOUS les champs de fusion du document?

Merci de vos aides.

3 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
1 août 2008 à 15:51
' Afficher le document en mode page pour pouvoir accéder aux  entêtes et pieds de page
            If ActiveWindow.ActivePane.View.Type <> wdPrintView Then
                ActiveWindow.ActivePane.View.Type = wdPrintView
            End If
           
0
fyl66 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 1 juin 2009
3 août 2008 à 16:20
Bonjour,
Merci de votre réponse rapide.
Cependant, même en affichant le doc en mode page, mon instruction ne me renvoie toujours pas les champs dans l'entête, le pied ou des zones de texte.

Je suis embêté car j'ai besoin de lister TOUS les champs de fusion d'un doc avant de réaliser le processus de publipostage.

Merci de votre aide.

Philippe
0
fyl66 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 1 juin 2009
3 août 2008 à 17:16
Rebonjour,

Je viens de trouver une partie de la solution.

rem Champs du corps du document-------------------------
For Each aField In ActiveDocument.MailMerge.Fields
    MsgBox ("Corps:" + Chr(13) + aField.Code)
Next aField


rem Champs du pied-----------------------------------------
Set myRange = ActiveDocument.Sections(1).Footers
(wdHeaderFooterPrimary).Range
For Each aField In myRange.Fields
    MsgBox ("Pied:" + Chr(13) + aField.Code)
Next aField

rem Champs de l'entête -------------------------------------
Set myRange = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
For Each aField In myRange.Fields
    MsgBox ("EnTête:" + Chr(13) + aField.Code)
Next aField


rem Champs éventuellement présents dans des zones de textes
For Each s In ActiveDocument.Shapes
    With s.TextFrame
        If .HasText Then
            s.Select
            ii = Selection.Fields.Count
            For jj = 1 To ii
                MsgBox ("Zones Textes:" + Chr(13) + Selection.Fields(jj).Code)
            Next
        End If
    End With
Next

Dernière question.
Comment   annuler ma sélection à la fin du traitement? (le s.select sélectionne en effet une zone de texte et je voudrais annuler cette sélection)
Merci.
0
Rejoignez-nous