Enregistrement auto publipostage nom champ

Fermé
Hessu - 18 oct. 2009 à 18:39
 Tonton-Telium - 8 mars 2023 à 20:54
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
4
AG94 Messages postés 16 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 6 septembre 2017
10 nov. 2016 à 16:48
Bonjour (presque 6 ans plus tard, comme quoi)

Moi j'avais utilisé la macro présente ici:
https://forums.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 :) ?
0
AG94 Messages postés 16 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 6 septembre 2017
10 nov. 2016 à 17:20
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
0
beru002 Messages postés 497 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 28 janvier 2016 27
Modifié par beru002 le 6/05/2013 à 12:46
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: https://www.generation-nt.com/reponses/repeter-macro-x-fois-entraide-611151.html
1
AG94 Messages postés 16 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 6 septembre 2017
10 nov. 2016 à 16:43
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.

https://forums.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
0
Sloubi76 Messages postés 1366 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 10 décembre 2016 135
18 oct. 2009 à 21:02
Bonsoir,

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

@ +
0
Hessu Messages postés 2 Date d'inscription dimanche 18 octobre 2009 Statut Membre Dernière intervention 19 octobre 2009
19 oct. 2009 à 10:06
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
0
AG94 Messages postés 16 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 6 septembre 2017
10 nov. 2016 à 16:37
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!

https://forums.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
0
beru002 Messages postés 497 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 28 janvier 2016 27
6 mai 2013 à 11:44
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...
0
AG94 Messages postés 16 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 6 septembre 2017
10 nov. 2016 à 16:39
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 ^^

https://forums.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
0
Tonton-Telium
8 mars 2023 à 20:54

Allez, moi aussi je vais rajouter ma petite pierre à l'édifice quelques années après (haha)

Pour que la Macro fonctionne il faut bien penser à "rembobiner" le publipostage (autrement dit se remettre sur l'enregistrement n+1 et en mode Prévisualisation de la fusion (sinon, ça n'enregistrera les champs qu'en mode "Nom_De_La_Variable"

Si on veut supprimer le rembobinage Manuel, on peut rajouter au début de la seconde Macro (préconisée par beru002) :

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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)?
0
AG94 Messages postés 16 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 6 septembre 2017
10 nov. 2016 à 16:40
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",...

https://forums.commentcamarche.net/forum/affich-22687992-enregistrer-un-doc-word-en-pdf-individuel#p34081359
0