Enregistrement auto publipostage nom champ [Fermé]

Signaler
-
AG94
Messages postés
10
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
6 septembre 2017
-
Bonjour,
J'ai une problématique similaire que la question " scinder un publipostage de machacha" et votre aide serait sympa.
J'ai un doc word de 1 page en publipostage avec x champs en publipostage depuis un fichier excel
pas de problème
Je voudrais enregistrer " automatiquement" chaque page " publipostée" de telle manière que chaque fichier comporte une fusion d'un ( ou deux) champs et s'appelle par exemple XPU_<<nomduchamp>>.doc
et donc si mon fichier excel fait 100 lignes, j'aurai 100 fichiers nommés automatiquement
Est-ce possible pour un nul en macro et Vb ?

Merci par avance

Hessu

5 réponses

Bonjour, (2 ans après)

Je suis tombé sur ce poste au fil de recherche dans le même domaine (publipostage etc), du coup, voici ma participation :

A défaut de pouvoir tout faire automatiquement, il est possible de procéder comme suit :
ouvrir le fichier word pour le publipostage
utiliser la macro suivante pour enregistrer automatiquement au nom désiré
Utiliser les flèches du publipostage pour passer à la 2eme ligne du tableau excel, et cliquer de nouveau sur la macro, ainsi de suite, c'est long mais il n'y a pas besoin de nommer chaque fichier à la main :

Sub Macro()
'
'définit "nom" en fonction de la valeur du champ de la 2ème colonne du tableau excel
nom = ActiveDocument.MailMerge.DataSource.DataFields(2).Value
idem pour "prénom" en fonction de la valeur de la colonne n°3
prénom = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
idem pour "prénom" en fonction de la valeur de la colonne n°6
consultation_du = ActiveDocument.MailMerge.DataSource.DataFields(6).Value

ChangeFileOpenDirectory "R:\CONSULTATIONS EN ATTENTE DE CORRECTION"
ActiveDocument.SaveAs FileName:=nom & " " & prénom & " " & consultation_du & ".doc", FileFormat:=wdFormatDocument

End Sub
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 81220 internautes nous ont dit merci ce mois-ci

AG94
Messages postés
10
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
6 septembre 2017

Bonjour (presque 6 ans plus tard, comme quoi)

Moi j'avais utilisé la macro présente ici:
http://www.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
afin de créer des e-billets en pdf unique en revanche la programmation initiale ne nomme que les fichiers en "1", "2", "3"..., un contributeur a voulu répondre à quelqu'un pour nommer les fichiers en reprenant un champs de fusion mais ça ne fonctionne pas, un apporte une réponse mais en fait il reprend exactement le même codage...

Vos lignes seraient peut-être intégrables dans la macro du lien ci-dessus pour que de vos 2 macros j'arrive à mes fins :) ?
AG94
Messages postés
10
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
6 septembre 2017

Alors je viens de mélanger la macro pour faire les pdf unique (1 par page) et vos lignes pour nommer les fichiers (macro générée collée ci-dessous) en revanche j'ai un petit problème:
-Si j'active la matrice depuis mon template Word de publipostage (le modèle), ça fonctionne correctement (donc visiblement ma programmation des noms est bonne) mais du coup je n'ai que le premier fichier puisque lorsqu'on "fusionne" c'est un second fichier Word qui s'ouvre et c'est dans celui-ci que sont générés tous mes e-billets (tous les résultats de mon publipostage en fait avec autant de pages qu'il y a de lignes dans mon Excel), . Or, quand j'utilise la macro dans ce nouveau fichier, il y a un message d'erreur et je pense que c'est parce que l'Excel (où la macro va chercher les nom) est lié à mon modèle mais pas au fichier "résultat" que crée Word... (vous voyez ce que je veux dire?) Que dois-je faire selon vous?

Voici mon codage:

Sub DEMATERIALISATION()
'
Dim NbPage As Integer
Application.ScreenUpdating = False

NbPage = ActiveDocument.Windows(1).Panes(1).Pages.Count

For i = 1 To NbPage

CE = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
CODE_BARRE = ActiveDocument.MailMerge.DataSource.DataFields(3).Value

ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\Users\ange.gagliani\Documents\EBillets\" & CE & " " & i & " Billet " & CODE_BARRE & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportFromTo, From:=i, To:=i, Item:= _
wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
Next

Application.ScreenUpdating = True

MsgBox "Export terminé"

End Sub
Messages postés
495
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
28 janvier 2016
22
Même pas deux ans après:
Donc, pour n'avoir à cliquer qu'une seule fois, on va avoir besoin de deux macros. A la première, fournie par Amenesh, on rajoute à la fin, avant le "End Sub":

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord

Ce qui permet de passer à l'entrée suivante.
Ensuite, il suffit de créer une autre macro qui va lancer celle-ci un nombre de fois désiré (ici, 95 fois):

Sub Lancer_plusieurs_fois()
Dim Compteur As Long
For Compteur = 1 To 95
MA_MACRO
Next Compteur
End Sub

Pensez à remplacer "MA_MACRO" par le nom que vous avez donné à la première macro et changer "1 To ..." avec le nombre d'entrées que vous avez.

Il vous suffit ensuite de lancer cette deuxième macro, et le tour est joué!!

Notez tout de même que si vous avez deux entrées où apparaîtront le même nom, prénom et consultation_du, vous n'aurez que la deuxième, puisque la première sera écrasée automatiquement... (donner un numéro de ligne sous excel avant publipostage permet de garder toutes les entrées, même s'il y a des doublons)
Notez aussi de bien vous positionner sur l'entrée numéro 1, avant de lancer la macro... je viens de me faire avoir, à enregistrer 95 fois la dernière entrée...

En espérant que ça servira à beaucoup d'entre vous!!!

PS: pour éviter toute confusion, la deuxième macro, je l'ai trouvée ici: http://www.generation-nt.com/reponses/repeter-macro-x-fois-entraide-611151.html
AG94
Messages postés
10
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
6 septembre 2017

Dans la page qui suit il y a un codage où tu n'as pas besoin d'entrer le nombre de pages désiré: en fait la macro compte le nombre de page automatiquement puis crée autant de fichiers qu'il y a de pages.

http://www.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
Messages postés
1367
Date d'inscription
dimanche 11 mai 2008
Statut
Membre
Dernière intervention
10 décembre 2016
103
Bonsoir,

C'est possible en utilisant l'option " fusion vers un fichier".Celui ci contiendra l'ensemble des éléments publipostés.

@ +
Hessu
Messages postés
1
Date d'inscription
dimanche 18 octobre 2009
Statut
Membre
Dernière intervention
19 octobre 2009

Bonjour
Merci de votre réponse
l'impression d'un fichier publiposté avec un fichier de données contenant n lignes ne donnera qu'un seul fichier avec n pages
J'ai besoin d'enregistrer " automatiquement" chaque page publipostée avec le nom d'un des champs présent le fichier de données
Avez-vous une idée

Merci d'avance
AG94
Messages postés
10
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
6 septembre 2017

regarde ça pour générer 1 fichier par page. En revanche je dois résoudre pour que ça nomme en reprenant comme tu le veux également un ou plusieurs des champs, car pour l'instant ça me les nomme en "1", "2", "3"... mais voilà regarde déjà la macro pour automatiser le fait de générer 1 PDF par page en un seul clic!

http://www.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
Messages postés
495
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
28 janvier 2016
22
Bonjour,
Tout d'abord, merci pour ce code (encore 2 ans après!! comme quoi, ça sert!!)
Je rajoute juste ma petite contribution pour que l'export se fasse en pdf:
_ remplacer ".doc" par ".pdf" (bien entendu)
_ remplacer "wdFormatDocument" par "wdExportFormatPDF"

Voilà!!!
Si quelqu'un trouve, dans deux ans, comment faire pour ne pas avoir à cliquer pour chaque page...
AG94
Messages postés
10
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
6 septembre 2017

Sur ce même forum j'ai trouvé ça qui te permet de générer autant de pdf que de page en un seul clic!!! (par contre faut que je relise bien cette page-ci car dans le lien que je te mets ci-après, la correction apportée me semble pas bonne du coup je n'arrive pas faire que chaque fichier se nomme en reprenant un des champs... ça les appelle juste "1", "2", "3"... Il faut donc mélanger un peu des 2 codages ^^

http://www.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
Bonjour,

Merci déjà pour tout ce que j'ai pu lire, c'est très instructif!
Je suis à la recherche du même principe mais ici avec le nom qui diffère à chaque enregistrement. C'est à dire, qu'une fois les pages scindées, je souhaite qu'il m'enregistre page 1 : 12345_nomclient_prénomclient_page.doc, page 2 : 67890_nomclientdifférent_prénomclientdifférent_page.doc et ainsi de suite.

En résumé, est-il possible de demander à word d'aller chercher les données d'excel en fonction des lignes (différentes à chaque fois)?
AG94
Messages postés
10
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
6 septembre 2017

Visiblement oui mais les explications sur une autre page de ce même forum me semblent incomplètes, je n'arrive qu'à les nommer "1", "2", "3",...

http://www.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359