Macro Publipostage vers Pdf individuel

Anonyme
2024-02-20T15:36:19+00:00

Bonjour,

Je suis en train de faire un publipostage. Je souhaite le diviser automatiquement en PDF de 1 pages.

J'utilise actuellement la macro suivante :

Sub publipostage()

Dim fusion As MailMerge

Dim x As Integer, nb As Integer

Dim chemin As String, nom As String

Set fusion = ActiveDocument.MailMerge

chemin = "D:\Mes documents"

nb = fusion.DataSource.RecordCount

For x = 0 To nb - 1

With fusion

.DataSource.FirstRecord = x + 1

.DataSource.LastRecord = x + 1

.Destination = wdSendToNewDocument

.DataSource.ActiveRecord = x + 1

nom = .DataSource.DataFields("Nom")

.Execute

End With

ActiveDocument.ExportAsFixedFormat OutputFileName:=chemin & nom & ".pdf", ExportFormat:=wdExportFormatPDF, openafterexport:=False

ActiveDocument.Close savechanges:=False

J'aimerais savoir s'il est possible d'enregistrer chaque PDF dans un dossier différent ?

Par exemple, la lettre de Mr XY se mettrai directement dans le DOSSIER XY.

La lettre de Mme XX se mettrai dans le dossier XX.

Pouvez vous m'aider svp ?

Merci.

Microsoft 365 et Office | Word | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

10 réponses

  1. Anonyme
    2024-07-29T17:25:58+00:00

    Bonjour,

    Le dossier se met en dessous du fichier crée.

    J'utilise la macro suivante :

    J'aimerais que pour chaque nouveau fichier pdf le dossier client vient s'alimenter de lui même selon le nom du client

    Sub publipostage()

    Dim fusion As MailMerge 
    
    Dim x As Integer, nb As Integer 
    
    Dim chemin As String, nom As String 
    
    Set fusion = ActiveDocument.MailMerge 
    
    chemin = "C:\Users\Kelly\Documents\coopelec\" (ici le lien de destination)
    
    nb = fusion.DataSource.RecordCount 
    
    For x = 0 To nb - 1 
    
        With fusion 
    
            .DataSource.FirstRecord = x + 1 
    
            .DataSource.LastRecord = x + 1 
    
            .Destination = wdSendToNewDocument 
    
            .DataSource.ActiveRecord = x + 1 
    
            nom = .DataSource.DataFields("mag") (ici le nom de mon client)
    
            .Execute 
    
        End With 
    
        If Dir(chemin & nom & "\", vbDirectory) = "" Then MkDir (chemin & nom & "\") 
    
        ActiveDocument.ExportAsFixedFormat OutputFileName:=chemin & nom & "cop8m" (ici le n° du fichier pdf) & ".pdf", ExportFormat:=wdExportFormatPDF, openafterexport:=False 
    
        ActiveDocument.Close savechanges:=False 
    
    Next 
    

    End Sub

    Et désole pour le retard dans la réponse, je viens de me rendre compte que j'avais eu un retour :-(

    Comme essaie de trouver des solutions pour optimiser mes heures de travaille je fais les test en dehors de mes heures de travail.

    Merci bcp pour votre temps.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2024-07-29T17:02:09+00:00

    Bonjour,

    Une réponse au bout de 5 mois, ça va être long comme échange 😁 !

    Je viens de prendre à nouveau le temps de re-tester ce code qui fonctionne chez moi !

    "le pdf ne se classe pas dans le fichier qui vient de se crée." => Il se met ou ? (c'est plus un dossier)

    Vérifier votre code / poster le ici.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2024-07-29T16:34:32+00:00

    Bonjour,

    Merci pour votre aide.

    Cependant j'ai toujours un soucis.

    J'utilise cette macro.

    Elle me crée bien un fichier et un pdf.

    Mais le pdf ne se classe pas dans le fichier qui vient de se crée.

    Pouvez-vous m'aider davantage ?

    Merci beaucoup

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2024-02-20T20:40:46+00:00

    Bonjour,

    Quelque chose comme

    Sub publipostage()

    Dim fusion As MailMerge 
    
    Dim x As Integer, nb As Integer 
    
    Dim chemin As String, nom As String 
    
    Set fusion = ActiveDocument.MailMerge 
    
    chemin = "c:\A\_Trans\" 
    
    nb = fusion.DataSource.RecordCount 
    
    For x = 0 To nb - 1 
    
        With fusion 
    
            .DataSource.FirstRecord = x + 1 
    
            .DataSource.LastRecord = x + 1 
    
            .Destination = wdSendToNewDocument 
    
            .DataSource.ActiveRecord = x + 1 
    
            nom = .DataSource.DataFields("Noms") 
    
            .Execute 
    
        End With 
    
        **If Dir(chemin & nom & "\", vbDirectory) = "" Then MkDir (chemin & nom & "\")** 
    
        ActiveDocument.ExportAsFixedFormat OutputFileName:=chemin **& nom & "\"** & nom & ".pdf", ExportFormat:=wdExportFormatPDF, openafterexport:=False 
    
        ActiveDocument.Close savechanges:=False 
    
    Next 
    

    End Sub

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2024-02-20T16:47:53+00:00

    Bonjour, LEBOEUF K,

    Je m’appelle Segunfunmi, je suis un conseiller indépendant et un utilisateur de Microsoft comme vous. Merci d’avoir posté votre question dans ce forum.

    Automatiser le processus de division de votre publipostage en PDF individuels d’une page et de les enregistrer dans des dossiers séparés est une excellente idée, et je peux vous aider à y parvenir. Laissez-moi vous expliquer ce qu’il en est :

    Pour diviser le publipostage en PDF d’une page, vous pouvez utiliser Adobe Acrobat ou d’autres outils PDF. Dans Adobe Acrobat, vous pouvez ouvrir votre PDF combiné et aller dans « Organiser les pages » > « Diviser » pour choisir la façon dont vous souhaitez diviser le fichier par page. Vous pouvez également utiliser des outils en ligne tels que Smallpdf ou d’autres séparateurs de PDF pour diviser votre PDF en pages individuelles.

    Pour personnaliser les noms de fichiers de chaque fichier PDF, vous pouvez ajouter des champs spécifiques à vos données de publipostage. Appelons ces champs DocFolderPath, DocFileName, PdfFolderPath et PdfFileName. Dans les champs Nom de fichier, placez les noms de fichiers souhaités pour les documents Word séparés et les PDF convertis, sans avoir besoin d’inclure les extensions.

    Bien qu’il ne soit pas toujours facile de spécifier directement différents dossiers de sortie dans la macro Publipostage, vous pouvez organiser manuellement les fichiers PDF générés dans des dossiers distincts une fois le processus terminé. Vous pouvez également utiliser un script ou un outil distinct pour déplacer les fichiers PDF vers leurs dossiers respectifs en fonction des noms de fichiers personnalisés.

    Si vous souhaitez réenregistrer des fichiers PDF existants dans un dossier sans le faire individuellement, vous pouvez utiliser Adobe Acrobat pour les combiner en un seul fichier PDF et l’enregistrer sous un nouveau nom. Vous pouvez également utiliser des outils en ligne de commande ou écrire un script (par exemple, à l’aide de Python) pour automatiser le processus d’ouverture de chaque PDF et de réenregistrement sous le même nom.

    Ces conseils vous aideront à automatiser efficacement le processus. Faites-moi savoir si vous avez d’autres questions ou si vous avez besoin d’aide supplémentaire !

    Cordialement Segunfunmi.

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire