Mon problème est simple mais je ne lui trouve toujours pas de solution.
J'ai un document Word, je veux insérer un saut de page à la fin de chacune des pages. A priori ce qu'il faut faire, c'est parcourir les pages une à une et insérer un saut de page à la fin du texte. J'ai aussi une contrainte, c'est que dans certaines pages j'ai des sauts de sections. J'ai essayé ce code mais le résultat n'est pas fameux. Déjà le curseur ne va pas automatiquement sur la première page et après les insertions ne sont pas aux bons endroits.
Merci de votre aide :)
Sub saut_de_page()
Dim curDoc As Document
Dim str As String
Dim curHeader As HeaderFooter
Set curDoc = ActiveDocument
curDoc.GoTo what:=gotopage, which:=wdGoToFirst
For i = 1 To curDoc.BuiltInDocumentProperties("Number of pages")
curDoc.Bookmarks("\Page").Select
str = Selection.text
Selection.text = str & chr(12)
Selection.GoTo what:=gotopage, which:=wdGoToNext, Count:=2
Next
End Sub
A voir également:
"Url de la page, sur votre site, où est affiché le lien vers"
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 déc. 2012 à 09:54
Salut
Avant de voir le côté programmation, explique nous pourquoi tu veux doubler ces sauts de page ?
Si le document est déjà découpé en pages, l'ajout d'un nouveau saut de page va donc insérer une page blanche entre chaque page.
Côté programmation, si vraiment tu veux ajouter des pages blanches, je pense qu'il serait judicieux de commencer par la fin du document car, en ajoutant un saut de page, tu vas augmenter le nombre de pages.
Alors le GotoNext/2 va fonctionner (pas sûr), mais tu vas arrêter de faire tes ajouts de Chr$(12) après la page P qui correspond au nombre de pages défini avant de commencer (au moment de la première exécution du For). A priori, ton code ne devrait fonctionner que pour la première moitié du document.
Ce qui donnerait (pas testé) :
With ActiveDocument
.GoTo what:=gotopage, which:=wdGoToLast
For i = .BuiltInDocumentProperties("Number of pages") To 1 Step -1
.Bookmarks("\Page").Select
Str = Selection.Text
Selection.Text = Str & Chr(12)
Selection.GoTo what:=gotopage, which:=wdGoToPrevious, Count:=2
Next i
End With
Chr$(12), c'est un peu basique (ça me rappelle la programmation sur les imprimantes à aiguilles, lol).
Sous Word, l'ajout d'un saut de page se fait avec
Selection.InsertBreak Type:=wdPageBreak
(voir enregistreur de macro)
Je te recommande aussi, avant de faire ces insertions de Chr$(12), de les supprimer de ton doc avant de commencer, car si tu exécutes 2 fois ton code, ça va faire beaucoup de pages blanches ...
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Alors mon objectif est très simple. Je travail sur un document word et j'ai plusieurs Macros à lancer. Chacune de ces macros a un traitement spécifique qui consiste généralement à supprimer des parties du documents (paragraphes, mots, caractères) ce qui fait qu'après chaque traitement je ne suis pas sure que chaque page va garder son contenu, peut être qu'elle va recevoir une partie du contenu de la page qui la suit. C'est pourquoi je veux insérer des saut de pages pour être sure que chaque page gardera seulement son contenu à elle.
J'ai testé ta macro, le problème c'est qu'elle ne va pas directement à la dernière page. Il faut mettre le curseur à la dernière page avant de la lancer. Et ça n'a toujours pas donnée de bon résultats.
Le Selection.InsertBreak Type:=wdPageBreak me supprime le contenu de la page, c'est pourquoi j'ai concaténé le texte avec le caractère saut de page.