Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA: sélection des pieds de page

16 réponses
Avatar
Jac
Bonjour à tous,

dans un document configuré avec les entêtes et pieds de page de la première
page différents, j'ai besoin de sélectionner le pied de page de la première
page puis celui des pages suivantes. Il n'y a qu'une seule section dans le
document. Pour la première page, j'active son pied de page par

ActiveWindow.ActivePane.View.SeekView = wdSeekFirstPageFooter
qui me donne le même résultat qu'avec wdSeekCurrentPageHeader.

Mais je n'arrive pas à atteindre le pied de page du reste du document qui
commence à la deuxième page. J'ai essayé sans succès wdSeeknextPageHeader,
wdSeeksecondPageHeader.

Merci d'avance à qui pourrait me dire quelle parole magique je dois employer
pour y arriver. L'aide et les bouquins consultés sont assez évasifs sur ce
point...

Jac

6 réponses

1 2
Avatar
Jac
"Anacoluthe" a écrit dans le message de news:

Bonjour !

'Jac' nous a écrit ...
En fait la manip est la suivante :
ActiveWindow.ActivePane.View.SeekView = wdSeekFirstPageFooter
ActiveWindow.Selection.WholeStory
ActiveWindow.Selection.Fields.Unlink

Mais si ça peut se faire autrement, je suis preneur.


Activedocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Fields.Unlink

Anacoluthe
« Pourquoi faire simple quand on peut faire compliqué ? »
- Jacques ROUXEL



Avatar
Jac
... donc pour la première page j'ai mis
Footers(wdHeaderFooterFirstPage)
mais pour adapter la formule magique au corps du document j'ai testé en vain
les associations qui tournent autour de MainDocument. Merci encore pour
m'aider à en finir.

"Anacoluthe" a écrit dans le message de news:

Bonjour !

'Jac' nous a écrit ...
En fait la manip est la suivante :
ActiveWindow.ActivePane.View.SeekView = wdSeekFirstPageFooter
ActiveWindow.Selection.WholeStory
ActiveWindow.Selection.Fields.Unlink

Mais si ça peut se faire autrement, je suis preneur.


Activedocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Fields.Unlink

Anacoluthe
« Pourquoi faire simple quand on peut faire compliqué ? »
- Jacques ROUXEL



Avatar
Geo
Bonjour à Jac

Sub DéLinker()
Dim Plage As Range
For Each Plage In ActiveDocument.StoryRanges
Plage.Fields.Unlink
Next Plage
End Sub

--
A+
Avatar
Jac
Ça m'intéresse car ça fonctionne dans tous les cas de figure.
Mais je dois passer ces commandes depuis le VBA d'XL... et là, mes
tentatives de transposition reçoivent des messages d'erreur systématiques.

J'ouvre le doc avec
...
Set Dc = Wd.Documents.Open(QUEL_DOCUMENT)
Wd.Visible = true
et maintenant j'aimerais insérer ta boucle, mais avec
For Each Plage In Dc.ActiveDocument.StoryRanges
ça ne passe pas.
Merci de recoir ma copie de ton code...

"Geo" a écrit dans le message de news:

Bonjour à Jac

Sub DéLinker()
Dim Plage As Range
For Each Plage In ActiveDocument.StoryRanges
Plage.Fields.Unlink
Next Plage
End Sub

--
A+




Avatar
Anacoluthe
Bonjour !

'Jac' nous a écrit ...
Ça m'intéresse car ça fonctionne dans tous les cas de figure.
Mais je dois passer ces commandes depuis le VBA d'XL... et là, mes
tentatives de transposition reçoivent des messages d'erreur systématiques.
Set Dc = Wd.Documents.Open(QUEL_DOCUMENT)
Wd.Visible = true
et maintenant j'aimerais insérer ta boucle, mais avec
For Each Plage In Dc.ActiveDocument.StoryRanges
ça ne passe pas.


Dim Plage As Range
Cependant Range est AUSSI un /objet/ EXCEL !
Si votre macro Excel vous devez donc écrire

Dim Plage As Word.Range

et plus loin :

For Each Plage in Dc.StoryRanges
Plage.Fields.Unlink
Next Plage

Dc.StoryRanges et non Dc.ActiveDocument.StoryRanges
puisque Dc est votre /objet/ Document Word !

Ça marche ?

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD

Avatar
Jac
C'est magique...
Merci à toute la chaîne de contributeurs qui m'a permis d'arriver à cette
solution simple, propre et efficace.

Jac

"Anacoluthe" a écrit dans le message de news:

Bonjour !

'Jac' nous a écrit ...
Ça m'intéresse car ça fonctionne dans tous les cas de figure.
Mais je dois passer ces commandes depuis le VBA d'XL... et là, mes
tentatives de transposition reçoivent des messages d'erreur
systématiques.
Set Dc = Wd.Documents.Open(QUEL_DOCUMENT)
Wd.Visible = true
et maintenant j'aimerais insérer ta boucle, mais avec
For Each Plage In Dc.ActiveDocument.StoryRanges
ça ne passe pas.


Dim Plage As Range
Cependant Range est AUSSI un /objet/ EXCEL !
Si votre macro Excel vous devez donc écrire

Dim Plage As Word.Range

et plus loin :

For Each Plage in Dc.StoryRanges
Plage.Fields.Unlink
Next Plage

Dc.StoryRanges et non Dc.ActiveDocument.StoryRanges
puisque Dc est votre /objet/ Document Word !

Ça marche ?

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD



1 2