Vba : traitement dans pied de page

Le
Jac
Bonjour à tous,

dans un doc qui contient une première page différente, je dois effectuer un
traitement dans les pieds de page. L'enregistreur me done ceci :
--
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
ActiveWindow.ActivePane.View.NextHeaderFooter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
--
Et quand je veux relancer ce code, vba me dit "Erreur d'exécution '5825' :
l'objet a été supprimé."

Or c'est lui qui a pris note !!!
Mon fichier n'a subit aucune modif entre temps.
Pourquoi ne veut-il pas faire ce qu'il a noté lui-même ?

Merci d'avance à qui pourra me dire ce que je dois faire ou modifier.

Jac
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #1650258

Et quand je veux relancer ce code, vba me dit "Erreur d'exécution '5825' : l'objet a
été supprimé."


Si vous disiez sur quelle ligne ça se produit ?

--
A+

Corona
Le #1649968
Bonjour Jac,
Si l'erreur ce situe au niveau de l'instruction
'ActiveWindow.ActivePane.View.NextHeaderFooter
Ajouter par exemple ce code au début de la macro 'Selection.HomeKey
Unit:=wdStory
Ce code est l'équivalent de 'control Home'
Il y a d'autres approches 'Atteindre la section 1' ou 'Atteindre la page
1' (tout dépend de ce que tu souhaites faire.
Vraisemblablement tu te trouves à la dernière section et le programme
ne peux évidemment pas aller à la suivante.
Pourquoi ne veut-il pas faire ce qu'il a noté lui-même ?
L'enregisteur de macro est une aide à la programmation mais ne peux pas

'deviner' tout ce que l'on veux faire.
Philippe

"Jac"
Bonjour à tous,

dans un doc qui contient une première page différente, je dois effectuer
un traitement dans les pieds de page. L'enregistreur me done ceci :
--------------------------------------------
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
ActiveWindow.ActivePane.View.NextHeaderFooter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
--------------------------------------------
Et quand je veux relancer ce code, vba me dit "Erreur d'exécution '5825' :
l'objet a été supprimé."

Or c'est lui qui a pris note !!!
Mon fichier n'a subit aucune modif entre temps.
Pourquoi ne veut-il pas faire ce qu'il a noté lui-même ?

Merci d'avance à qui pourra me dire ce que je dois faire ou modifier.

Jac



Jac
Le #1649657
Bonjour Geo,

c'est sur la ligne
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
qur tout s'arrête...

"Geo"

Et quand je veux relancer ce code, vba me dit "Erreur d'exécution '5825'
: l'objet a été supprimé."


Si vous disiez sur quelle ligne ça se produit ?

--
A+





Jac
Le #1662827
Bonjour Corona,

justement, j'ai cette ligne juste avant la ligne qui bloque

Selection.HomeKey Unit:=wdStory
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then

"Corona" ug6l%
Bonjour Jac,
Si l'erreur ce situe au niveau de l'instruction
'ActiveWindow.ActivePane.View.NextHeaderFooter
Ajouter par exemple ce code au début de la macro 'Selection.HomeKey
Unit:=wdStory
Ce code est l'équivalent de 'control Home'
Il y a d'autres approches 'Atteindre la section 1' ou 'Atteindre la
page 1' (tout dépend de ce que tu souhaites faire.
Vraisemblablement tu te trouves à la dernière section et le programme
ne peux évidemment pas aller à la suivante.
Pourquoi ne veut-il pas faire ce qu'il a noté lui-même ?
L'enregisteur de macro est une aide à la programmation mais ne peux pas

'deviner' tout ce que l'on veux faire.
Philippe

"Jac"
Bonjour à tous,

dans un doc qui contient une première page différente, je dois effectuer
un traitement dans les pieds de page. L'enregistreur me done ceci :
--------------------------------------------
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
ActiveWindow.ActivePane.View.NextHeaderFooter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
--------------------------------------------
Et quand je veux relancer ce code, vba me dit "Erreur d'exécution '5825'
: l'objet a été supprimé."

Or c'est lui qui a pris note !!!
Mon fichier n'a subit aucune modif entre temps.
Pourquoi ne veut-il pas faire ce qu'il a noté lui-même ?

Merci d'avance à qui pourra me dire ce que je dois faire ou modifier.

Jac







Geo
Le #1662821

Bonjour Corona,

justement, j'ai cette ligne juste avant la ligne qui bloque

Selection.HomeKey Unit:=wdStory
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then


Votre programmation marche très bien chez moi, peut-être une question
de fenêtre affichée, essayez cette forme :

With ActiveDocument.ActiveWindow
If .View.SplitSpecial <> wdPaneNone Then
.Panes(2).Close
End If
If .ActivePane.View.Type = wdNormalView Or _
.ActivePane.View.Type = wdOutlineView Then
.ActivePane.View.Type = wdPrintView
End If
.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
.ActivePane.View.NextHeaderFooter
.ActivePane.View.SeekView = wdSeekMainDocument
End With

Comme l'a dit Corona, dites ce que vous voulez faire, ça permet de vous
proposer un code plus simple.
Pour ce type de travail Word prévoit toutes les cas de figure
d'affichage. Comme c'est vous qui programmez, vous savez où vous en
êtes de l'affichage il y a donc pas mal de code inutile.
De plus, précisez votre version de Word, il y a quelques cas de
traitement d'en-tête qui réagiss(ai)ent différemment avec 2007.

--
A+

Jac
Le #1662819
En fait, mon document de base est un modèle Word XP.
A l'ouverture, via une macro Private Sub Document_New(), je remets-en place
la cible Excel du publipostage, je mets à jour les champs, et je fusionne
dans un nouveau document à qui je fais subir un petit traitement des dates
dans le corps du texte pour mettre en exposant le "er" des premiers jours du
mois.

C'est quand je veux appliquer ce traitement dans les pieds de page (de
première page puis des pages suivantes) que la macro s'arrête. En fait ce
qu'il me faut c'est activer le premier pied de page / traitement des dates /
puis activer le pied de page suivante / traitement des dates.

Pour ce qui est du premier pied de page, je viens de trouver comment y
accéder rapidement en écrivant cette réponse : je remplace les 13 lignes du
générateur de macro par
ActiveDocument.ActiveWindow.View.SeekView = wdSeekFirstPageFooter
et ça passe sans problème. Ouf.

Donc ma question se résume désormais trouver la phrase magique pour à
atteindre le prochain pied de page.
J'ai essayé avec "... = wdSeeknextPageFooter" mais ça ne fonctionne pas.
Avec "ActiveWindow.ActivePane.View.NextHeaderFooter" de l'enregistreur, je
retombe sur une erreur 5825 : l'objet a été supprimé.


"Geo"

Bonjour Corona,

justement, j'ai cette ligne juste avant la ligne qui bloque

Selection.HomeKey Unit:=wdStory
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then


Votre programmation marche très bien chez moi, peut-être une question de
fenêtre affichée, essayez cette forme :

With ActiveDocument.ActiveWindow
If .View.SplitSpecial <> wdPaneNone Then
.Panes(2).Close
End If
If .ActivePane.View.Type = wdNormalView Or _
.ActivePane.View.Type = wdOutlineView Then
.ActivePane.View.Type = wdPrintView
End If
.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
.ActivePane.View.NextHeaderFooter
.ActivePane.View.SeekView = wdSeekMainDocument
End With

Comme l'a dit Corona, dites ce que vous voulez faire, ça permet de vous
proposer un code plus simple.
Pour ce type de travail Word prévoit toutes les cas de figure d'affichage.
Comme c'est vous qui programmez, vous savez où vous en êtes de l'affichage
il y a donc pas mal de code inutile.
De plus, précisez votre version de Word, il y a quelques cas de traitement
d'en-tête qui réagiss(ai)ent différemment avec 2007.

--
A+





Publicité
Poster une réponse
Anonyme