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
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
Si vous disiez sur quelle ligne ça se produit ?
--
A+
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.
'deviner' tout ce que l'on veux faire.
Philippe
"Jac"
c'est sur la ligne
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
qur tout s'arrête...
"Geo"
justement, j'ai cette ligne juste avant la ligne qui bloque
Selection.HomeKey Unit:=wdStory
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
"Corona" ug6l%
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+
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"