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

Fermé
Fabienne - 16 juil. 2020 à 10:50
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 - 24 juil. 2020 à 15:51
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
A voir également:

3 réponses

Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
16 juil. 2020 à 17:22
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
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
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
Modifié le 24 juil. 2020 à 16:45
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