Signaler

Enregistrement individuel après publipostage

Posez votre question joanie1234 1Messages postés vendredi 10 novembre 2017Date d'inscription 10 novembre 2017 Dernière intervention - Dernière réponse le 15 nov. 2017 à 20:23 par joanie1234
J'ai un formulaire de 2 pages auquel j'ai fait un publipostage.

J'aimerais l'enregistrer en Word de façon individuel, mais j'ai vraiment un problème avec le code (et je suis plus ou moins doué dans ce domaine)
1- La mise en page ne suit pas
2- Comment enregistrer le document avec un mot présent dans le doc en question ?


Sub BreakOnPage()
Application.Browser.Target = wdBrowsePage
For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")

ActiveDocument.Bookmarks("\page").Range.Copy
Documents.Add
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Selection.PageSetup.Orientation = wdOrientLandscape

Selection.TypeBackspace
ChangeFileOpenDirectory "P:\ÉVÉNEMENTS SIGNATURES\2. Mois de la jonquille\Jonquilles 2018\4. Points de vente\Formulaire\Nouveau dossier\"
DocNum = DocNum + 1
ActiveDocument.SaveAs FileName:="Formulaire jonquille_" & DocNum & ".docx"
ActiveDocument.Close

Application.Browser.Next
Next i
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub

Merci tellement! :)
Utile
+0
plus moins
Bonjour,

C'est normal que la mise en forme (et la mise en page) ne suit pas car la macro crée un nouveau document basique, et donc basé sur le Normal.dotm.

Donc, il faut indiquer le modèle que tu veux utiliser.

A la ligne Documents.Add, tu dois préciser le nom du modèle. Et puisque tu pars d'un document déjà fait et donc basé sur un modèle, tu peux récupérer le nom de ce modèle et l'utiliser pour créer chaque nouveau document.

A mettre en début de macro :
Dim mon_modele As String
mon_modele = ActiveDocument.AttachedTemplate.FullName

et à remplacer dans la boucle :
Documents.Add Template:=mon_modele


m@rina
Donnez votre avis
Utile
+0
plus moins
Salut,
merci beaucoup! la mise en page est conservée lors de l,enregistrement. Par contre, il ne prend pas en compte mes deux pages. Mon document comporte 4 fichiers de 2 pages chacune et quand je passe à l'enregistrement, j'ai 8 documents. Est-ce que tu sais quelle autre formule je pourrais ajouter?

Voici la formule jusqu'à présent:

Sub BreakOnPage()
Application.Browser.Target = wdBrowseSection
For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")
Dim mon_modele As String
mon_modele = ActiveDocument.AttachedTemplate.FullName

ActiveDocument.Bookmarks("\page").Range.Copy
Documents.Add Template:=mon_modele
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Selection.PageSetup.Orientation = wdOrientLandscape

Selection.TypeBackspace
ChangeFileOpenDirectory "P:\ÉVÉNEMENTS SIGNATURES\2. Mois de la jonquille\Jonquilles 2018\4. Points de vente\Formulaire\Nouveau dossier\TEST"
DocNum = DocNum + 1
ActiveDocument.SaveAs FileName:="Formulaire jonquille_" & DocNum & ".docx"
ActiveDocument.Close

Application.Browser.Next
Next i
ActiveDocument.Close savechanges:=wdDoNotSaveChanges

End Sub

Merci!!!
Donnez votre avis
Utile
+0
plus moins
Bonsoir,

"Le document comporte 4 fichiers"... je n'ai pas bien saisi.
Tu veux sans doute dire que chaque "formulaire" issu du publipostage est contenu sur deux pages.

Ce qui compte, ce ne sont pas les pages, mais les sections. Chaque document résultat de publipostage est composé de sections, et donc ce peut être des sections d'une page s'il s''agit d'une simple lettre mais ce peut être aussi des sections d'un nombre x de pages. Or ta macro est basé sur les pages et non sur les sections.

J'ai ici deux macros qui font ça. La seconde est le pendant de la tienne, fournie par Microsoft, mais pour les sections :
http://faqword.com/index.php/word/environnement/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section

m@rina
Donnez votre avis
Utile
+0
plus moins
Merci pour ta réponse rapide.

J'ai essayé différents trucs et cela ne fonctionne pas.

Merci pour ton aide, mais je vais devoir trouver une solution autre que les macros car je ne m'y connais pas assez pour arriver à un résultat.

Merci,
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !