Changement d'un paramètre de la macro "SavePubliAsPdf"

Fabienne -  
Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Merci beaucoup pour cette macro qui m'est super utile.
J'ai juste un souci avec le nom du pdf enregistré. Dans la macro, je crois que c'est cette ligne
ActiveDocument.SaveAs2 Path & "\Courrier " & Id & ".pdf", wdFormatPDF
Ce qui donne des documents du type "Courrier ID.pdf"
Comment la réécrire juste pour que les documents soient enregistré avec le nom suivants : "Nom_prénom_a"? En sachant que j'ai une colonne nom et une colonne prénom dans mon tableau Excel de base pour le publipostage.

Merci pour la réponse

Configuration: Windows / Edge 18.18363

3 réponses

  1. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 477
     
    Bonjour,
    Pas simple avec un bout de code... et en plus sans connaitre la structure de votre fichier et aussi où se trouve cette macro..!
    0
  2. Fabienne
     
    Bonjour,
    Excusez, je pensais avoir répondu à une publication déjà existante.

    Voici la macro que j'ai trouvé sur ce forum :
    Sub SavePubliAsPDF()
    Dim LastRec As Integer
    Dim Path As String, Id As String
    
    Application.ScreenUpdating = False
    
    'Choix du dossier d'enregistrement des fichiers
    With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez un dossier où enregistrer vos fichiers"
    .Show
    If Not (.SelectedItems.Count = 0) Then
    Path = .SelectedItems(1)
    Else
    Exit Sub
    End If
    End With
    
    'Décompte du nombre d'enregistrements dans le publipostage
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
    LastRec = ActiveDocument.MailMerge.DataSource.ActiveRecord
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
    
    'Enregistrement des fichiers
    ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
    For i = 1 To LastRec Step 1
    Id = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
    ActiveDocument.SaveAs2 Path & "\Courrier " & Id & ".pdf", wdFormatPDF
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
    Next i
    
    MsgBox "L'enregistrement de votre publipostage est terminé." & vbLf & vbLf & LastRec & " fichiers ont été enregistrés dans le dossier : " & Path, vbOKOnly + vbInformation, "Enregistrement du publipostage terminé"
    
    Application.ScreenUpdating = True
    End Sub


    J'ai d'un côté un document Word avec lequel je fais un publipostage. La base de donnée est en Excel. Je dois faire des convocations personnalisées et enregistrer chacune d'entre elles dans un pdf séparé. La macro ci-dessus le fait à merveille.
    Par contre, le nom de fichier devient "courrier nom .pdf" et il faudrait que mes fichiers se nomment "NOM_prénom_c.pdf". Et je ne sais pas comment changer le code de la macro pour que ça corresponde.

    Pouvez-vous m'aider?
    Merci
    0
  3. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 477
     
    Bonjour,
    Je vous propose le code suivant à insérer dans votre macro et y adapter la ligne d’enregistrement
    Je suppose dans la boucle
    For i = 1 To LastRec Step 1


    Mon code :
    'macro sur le classeur avec nom,prénom sur feuille 1
    ' liste des noms,prénoms plage "A1:C......." titre colonne ligne 1 et nom en A, prénom en B et plus en C titre colonne ligne 1
    Set xlsh = Sheets("Feuil1")
    'Récupération du nombre de lignes 
    nbli = xlsh.Range("A" & Rows.Count).End(xlUp).Row
    'Boucle pour adresser les cellules contenant des données
    'en excluant la première ligne qui contient les titres
    For li = 2 To nbli
        NomPreAd = xlsh.Cells(li, 1) & "-" & xlsh.Cells(li, 2) & "-" & xlsh.Cells(li, 3)
        
    ' Introduire le code pour l'enregistrement de votre fichier, ligne instruction modifiée
      ActiveDocument.SaveAs2 Path & NomPreAd & ".pdf", wdFormatPDF
    Next li


    0