Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Publipostage

3 réponses
Avatar
AF86
Bonjour à toutes et à tous et merci d'avance pour vos réponses,

Alors, voilà mon pb :

J'ai un tableau excel simple avec plusieurs colonnes qui contiennent des
renseignements sur des clients.
J'ai aussi un document word avec l'option publipostage pour transférer les
données du tableau excel vers le doc word.

Jusqu'ici, tout va bien ! Mais... Et oui il y a un "Mais", lorsque je lance
le publipostage, l'ordi me génère un doc word unique avec les données
concernant le 1er client sur la 1ere page puis le 2e client sur la 2e page
etc... etc...
Normale me direz-vous mais voilà, je souhaiterais plutôt avoir un doc word
comportant 1 page concernant un client à chaque fois et non un seul doc word
avec tous les clients !

J'ai déjà fait quelques recherche sur la question et je suis arrivé avec mes
modestes moyens à faire cette macro incompléte malheureusement. Aussi je vous
demande de l'aide ;-(

Voici ma macro :

Sub Macro1()
' Génèration du publipostage pour l'enregistrement en cours :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
End With
' Enregistrement du nouveau document sur le disque dur (bureau) :
ChangeFileOpenDirectory _
"C:\Documents and Settings\utilisateur1\Bureau\"
ActiveDocument.SaveAs FileName:="doc 1.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="",
AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False,
EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
' Fermeture du nouveau document après l'enregistrement :
ActiveWindow.Close
' Retour au document source pour un autre publipostage :
Windows("Doc principal.docx").Activate
' Passer à l'enregistrement suivant sur le doc source :
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
End Sub

Vous constatez que je suis obligé de repéter manuellement la macro jusqu'au
dernier enregistrement ! Donc comment faire en sorte d'automatiser cette
macro pour qu'elle continue jusqu'au dernier enregistrement sans mon
intervention ?

Et ensuite, comment faire pour que l'ordi génère un nom automatiquement sans
écraser le doc word nouvellement créé (car après avoir fait la macro une
fois, il génère un 1er doc word 'doc 1" mais si on recommence, il écrase
alors le 1er "doc 1" pour refaire un autre "doc 1" avec l'enregistrement
encours donc pas cool) ?
Le must serait qu'il génère pour chaque dossier le nom "Doc 1", puis "doc
2"... Ou encore mieux, qu'il intégrè dans le nom du fichier le champs "Nom"
et "Prénom" du client en question lors du publipostage mais là j'en demande
peut être un peu trop !!! ;-)

Voilà, je vous remercie par avance pour vos réponses.

Bye

3 réponses

Avatar
Circé
Bonjour

Fais ton publipostage normalement et transforme le résultats en
plusieurs fichiers.

Regarde ici
http://faqword.fr/index.php/faq/vba-solutions/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section-.html

et ici :
http://support.microsoft.com/kb/q216201/

Circé
http://faqword.fr

Il se trouve que AF86 a formulé :
Bonjour à toutes et à tous et merci d'avance pour vos réponses,

Alors, voilà mon pb :

J'ai un tableau excel simple avec plusieurs colonnes qui contiennent des
renseignements sur des clients.
J'ai aussi un document word avec l'option publipostage pour transférer les
données du tableau excel vers le doc word.

Jusqu'ici, tout va bien ! Mais... Et oui il y a un "Mais", lorsque je lance
le publipostage, l'ordi me génère un doc word unique avec les données
concernant le 1er client sur la 1ere page puis le 2e client sur la 2e page
etc... etc...
Normale me direz-vous mais voilà, je souhaiterais plutôt avoir un doc word
comportant 1 page concernant un client à chaque fois et non un seul doc word
avec tous les clients !

J'ai déjà fait quelques recherche sur la question et je suis arrivé avec mes
modestes moyens à faire cette macro incompléte malheureusement. Aussi je vous
demande de l'aide ;-(

Voici ma macro :

Sub Macro1()
' Génèration du publipostage pour l'enregistrement en cours :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:úlse
End With
' Enregistrement du nouveau document sur le disque dur (bureau) :
ChangeFileOpenDirectory _
"C:Documents and Settingsutilisateur1Bureau"
ActiveDocument.SaveAs FileName:="doc 1.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:úlse, Password:="",
AddToRecentFiles _
=True, WritePassword:="", ReadOnlyRecommended:úlse, EmbedTrueTypeFonts _
úlse, SaveNativePictureFormat:úlse, SaveFormsData:úlse, _


SaveAsAOCELetter:úlse
' Fermeture du nouveau document après l'enregistrement :
ActiveWindow.Close
' Retour au document source pour un autre publipostage :
Windows("Doc principal.docx").Activate
' Passer à l'enregistrement suivant sur le doc source :
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
End Sub

Vous constatez que je suis obligé de repéter manuellement la macro jusqu'au
dernier enregistrement ! Donc comment faire en sorte d'automatiser cette
macro pour qu'elle continue jusqu'au dernier enregistrement sans mon
intervention ?

Et ensuite, comment faire pour que l'ordi génère un nom automatiquement sans
écraser le doc word nouvellement créé (car après avoir fait la macro une
fois, il génère un 1er doc word 'doc 1" mais si on recommence, il écrase
alors le 1er "doc 1" pour refaire un autre "doc 1" avec l'enregistrement
encours donc pas cool) ?
Le must serait qu'il génère pour chaque dossier le nom "Doc 1", puis "doc
2"... Ou encore mieux, qu'il intégrè dans le nom du fichier le champs "Nom"
et "Prénom" du client en question lors du publipostage mais là j'en demande
peut être un peu trop !!! ;-)

Voilà, je vous remercie par avance pour vos réponses.

Bye


Avatar
AF86
Merci pour ta réponse, j'ai pu me débrouiller avec les éléments que tu m'a
donné.

Cependant je cherche toujours comment faire pour utiliser un des champs de
publipostage (ex nom et prénom) pour l'intégrer automatiquement lors de la
sauvegarde mais ça c'est du bonus.

Merci encore

"Circé" a écrit :

Bonjour

Fais ton publipostage normalement et transforme le résultats en
plusieurs fichiers.

Regarde ici
http://faqword.fr/index.php/faq/vba-solutions/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section-.html

et ici :
http://support.microsoft.com/kb/q216201/

Circé
http://faqword.fr

Il se trouve que AF86 a formulé :
> Bonjour à toutes et à tous et merci d'avance pour vos réponses,
>
> Alors, voilà mon pb :
>
> J'ai un tableau excel simple avec plusieurs colonnes qui contiennent des
> renseignements sur des clients.
> J'ai aussi un document word avec l'option publipostage pour transférer les
> données du tableau excel vers le doc word.
>
> Jusqu'ici, tout va bien ! Mais... Et oui il y a un "Mais", lorsque je lance
> le publipostage, l'ordi me génère un doc word unique avec les données
> concernant le 1er client sur la 1ere page puis le 2e client sur la 2e page
> etc... etc...
> Normale me direz-vous mais voilà, je souhaiterais plutôt avoir un doc word
> comportant 1 page concernant un client à chaque fois et non un seul doc word
> avec tous les clients !
>
> J'ai déjà fait quelques recherche sur la question et je suis arrivé avec mes
> modestes moyens à faire cette macro incompléte malheureusement. Aussi je vous
> demande de l'aide ;-(
>
> Voici ma macro :
>
> Sub Macro1()
> ' Génèration du publipostage pour l'enregistrement en cours :
> With ActiveDocument.MailMerge
> .Destination = wdSendToNewDocument
> .SuppressBlankLines = True
> With .DataSource
> .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
> .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
> End With
> .Execute Pause:úlse
> End With
> ' Enregistrement du nouveau document sur le disque dur (bureau) :
> ChangeFileOpenDirectory _
> "C:Documents and Settingsutilisateur1Bureau"
> ActiveDocument.SaveAs FileName:="doc 1.docx", FileFormat:= _
> wdFormatXMLDocument, LockComments:úlse, Password:="",
> AddToRecentFiles _
>> =True, WritePassword:="", ReadOnlyRecommended:úlse, EmbedTrueTypeFonts _
>> úlse, SaveNativePictureFormat:úlse, SaveFormsData:úlse, _
> SaveAsAOCELetter:úlse
> ' Fermeture du nouveau document après l'enregistrement :
> ActiveWindow.Close
> ' Retour au document source pour un autre publipostage :
> Windows("Doc principal.docx").Activate
> ' Passer à l'enregistrement suivant sur le doc source :
> ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
> End Sub
>
> Vous constatez que je suis obligé de repéter manuellement la macro jusqu'au
> dernier enregistrement ! Donc comment faire en sorte d'automatiser cette
> macro pour qu'elle continue jusqu'au dernier enregistrement sans mon
> intervention ?
>
> Et ensuite, comment faire pour que l'ordi génère un nom automatiquement sans
> écraser le doc word nouvellement créé (car après avoir fait la macro une
> fois, il génère un 1er doc word 'doc 1" mais si on recommence, il écrase
> alors le 1er "doc 1" pour refaire un autre "doc 1" avec l'enregistrement
> encours donc pas cool) ?
> Le must serait qu'il génère pour chaque dossier le nom "Doc 1", puis "doc
> 2"... Ou encore mieux, qu'il intégrè dans le nom du fichier le champs "Nom"
> et "Prénom" du client en question lors du publipostage mais là j'en demande
> peut être un peu trop !!! ;-)
>
> Voilà, je vous remercie par avance pour vos réponses.
>
> Bye





Avatar
Circé
Bonsoir AF86,

Il se trouve que AF86 a formulé :
Merci pour ta réponse, j'ai pu me débrouiller avec les éléments que tu m'a
donné.

Cependant je cherche toujours comment faire pour utiliser un des champs de
publipostage (ex nom et prénom) pour l'intégrer automatiquement lors de la
sauvegarde mais ça c'est du bonus.



Tu peux t'aider de cette petite macro :
http://faqword.fr/index.php/faq/vba-solutions/630-cnomfichier.html

Circé
http://faqword.fr

Merci encore

"Circé" a écrit :

Bonjour

Fais ton publipostage normalement et transforme le résultats en
plusieurs fichiers.

Regarde ici
http://faqword.fr/index.php/faq/vba-solutions/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section-.html

et ici :
http://support.microsoft.com/kb/q216201/

Circé
http://faqword.fr

Il se trouve que AF86 a formulé :
Bonjour à toutes et à tous et merci d'avance pour vos réponses,

Alors, voilà mon pb :

J'ai un tableau excel simple avec plusieurs colonnes qui contiennent des
renseignements sur des clients.
J'ai aussi un document word avec l'option publipostage pour transférer les
données du tableau excel vers le doc word.

Jusqu'ici, tout va bien ! Mais... Et oui il y a un "Mais", lorsque je lance
le publipostage, l'ordi me génère un doc word unique avec les données
concernant le 1er client sur la 1ere page puis le 2e client sur la 2e page
etc... etc...
Normale me direz-vous mais voilà, je souhaiterais plutôt avoir un doc word
comportant 1 page concernant un client à chaque fois et non un seul doc
word avec tous les clients !

J'ai déjà fait quelques recherche sur la question et je suis arrivé avec
mes modestes moyens à faire cette macro incompléte malheureusement. Aussi
je vous demande de l'aide ;-(

Voici ma macro :

Sub Macro1()
' Génèration du publipostage pour l'enregistrement en cours :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:úlse
End With
' Enregistrement du nouveau document sur le disque dur (bureau) :
ChangeFileOpenDirectory _
"C:Documents and Settingsutilisateur1Bureau"
ActiveDocument.SaveAs FileName:="doc 1.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:úlse, Password:="",
AddToRecentFiles _
=True, WritePassword:="", ReadOnlyRecommended:úlse, EmbedTrueTypeFonts _
úlse, SaveNativePictureFormat:úlse, SaveFormsData:úlse, _


SaveAsAOCELetter:úlse
' Fermeture du nouveau document après l'enregistrement :
ActiveWindow.Close
' Retour au document source pour un autre publipostage :
Windows("Doc principal.docx").Activate
' Passer à l'enregistrement suivant sur le doc source :
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
End Sub

Vous constatez que je suis obligé de repéter manuellement la macro jusqu'au
dernier enregistrement ! Donc comment faire en sorte d'automatiser cette
macro pour qu'elle continue jusqu'au dernier enregistrement sans mon
intervention ?

Et ensuite, comment faire pour que l'ordi génère un nom automatiquement
sans écraser le doc word nouvellement créé (car après avoir fait la macro
une fois, il génère un 1er doc word 'doc 1" mais si on recommence, il
écrase alors le 1er "doc 1" pour refaire un autre "doc 1" avec
l'enregistrement encours donc pas cool) ?
Le must serait qu'il génère pour chaque dossier le nom "Doc 1", puis "doc
2"... Ou encore mieux, qu'il intégrè dans le nom du fichier le champs "Nom"
et "Prénom" du client en question lors du publipostage mais là j'en demande
peut être un peu trop !!! ;-)

Voilà, je vous remercie par avance pour vos réponses.

Bye