Copier variable VBA dans un champ de pied de page

[Résolu/Fermé]
Signaler
Messages postés
44
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
14 juillet 2021
-
Messages postés
44
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
14 juillet 2021
-
Coucou,

J'ai le problème suivant. Je souhaite copier le contenu d'une variable VBA dans un document Word, au niveau d'un champ qui est situé dans le pied de page. J'arrive à faire la manip lorsque le champ est dans le document hors pied de page, mais ma macro plante quand j'essaie de pointer vers le champ de mon pied de page.

Pour être plus précise, j'ai un document Word où est écrit:
"Mon premier champ : champ_1"
et au niveau du pied de page, un champ: champ_2

Pour écrire un contenu de variable vers ces champs, j'ai écrit ce code:

Sub modif_champ()

Dim WordApp As Object
Dim WordDoc As Object
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("F:\Documents\test\test.docx", ReadOnly:=False)

WordDoc.Fields(1).Result.Text = "titi"
WordDoc.Fields(2).Result.Text = "toto"
'WordDoc.Fields(
WordDoc.Save
WordApp.Quit

End Sub


Cette macro arrive à écrire titi dans champ_1 , mais elle plante sur le "toto" à assigner dans le champ_2 du pied de page. Sauriez-vous me dire quoi faire?

Merci (beaucoup) d'avance!

2 réponses

Messages postés
17125
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2021
909
bonjour, peut-être quelque chose comme:
WordDoc.Footers(1).Range.Fields(1).Result.Text = "toto"
Messages postés
44
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
14 juillet 2021

Hello,
merci pour la piste. ça me fait néanmoins planter la macro sur erreur 438 "Propriété ou méthode non gérée par cet objet". Cela dit, je change de stratégie. Je vais tout gérer avec des signets car ça fonctionne avec les signets. En gros, si sur mon pied de page, au lieu d'un champ, je mets un signet, la macro va bien pointer sur ce signet et écrire "toto", et puis cela va bien se répercuter sur tous les pieds de page, donc j'obtiens le résultat que je veux de cette manière
Messages postés
17125
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2021
909
ce serait plutôt:
WordDoc.Sections(1).Footers(1).Range.Fields(1).Result.Text = "toto"

tant mieux si plus simple avec les signets!
Messages postés
44
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
14 juillet 2021
>
Messages postés
17125
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2021

Merci beaucoup, ce code marche nickel, c'est exactement cette syntaxe que je recherchais :)
Encore merci !!