Macro de publipostage en multiple fichiers pdf - Message d'erreur - VB/VBA/VBS - Programmation
Marsh Posté le 12-04-2021 à 15:51:51
ReplyMarsh Posté le 12-04-2021 à 16:01:49
C'est pas achat-ventes ici, tu as dû faire une fausse manip vu le nouveau titre.
Marsh Posté le 12-04-2021 à 17:20:45
Oui, soucis à chaque fois que je modifie la premier message, ça remet systématiquement un titre d'un ancien topic que j'avais créé il y a plusieurs mois...
Je ne comprend pas pourquoi.
Marsh Posté le 12-04-2021 à 17:34:28
rat de combat a écrit : Une histoire de slash simple vs slash double? Autrement dit C:\\test? |
Il y avait une erreur dans le copier-coller, c'était la version avec le chemin absolu et non relatif, mais la logique est proche.
Quoi qu'il en soit j'ai tenté le "\\" en début et/ou fin de "\Sortie\"
Même résultat.
Marsh Posté le 12-04-2021 à 23:59:09
C'était causé par le fait que j'avais anticipé des lignes, donc vides dans le fichier excel.
La macro n'appréciait pas.
Marsh Posté le 12-04-2021 à 15:50:13
Une amie m'a demandé de l'aide pour mettre au point un publipostage générant plusieurs fichiers pdf pour chaque ligne d'un fichier excel.
J'ai corrigé le fichier excel et publipostage sous word.
J'ai trouvé quelques macro permettant le publipostage en multiples fichiers pdf.
Sub publipostagepdf()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim nom As String
Dim oDS As MailMergeDataSource
Dim path As String
path = Application.ActiveDocument.path
' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
iR = oDoc.MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document
nom = .DataSource.DataFields("NomFichier" ) 'Remplacer Nom" par le champ à utiliser
Debug.Print DocName; i
'Application.DisplayAlerts = False
With ActiveDocument
.SaveAs FileName:=path & "\Sortie\" & Format(Date, "yy" ) & Format(Date, "mm" ) & Format(Date, "dd" ) & Format(Time, "hhmm" ) & ".doc"
.Close
End With
End With
' Sauvegarde du document publiposté
With ActiveDocument
.ExportAsFixedFormat OutputFileName:=path & "\Sortie\" & nom & ".pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
End With
Next i
End Sub
Au début je ne voyais pas comment sauvegarder en chemin relatif, mais j'ai trouvé.
Les fichiers se génèrent bien au bon endroit, mais j'obtiens un message d'erreur :
C'est manifestement lié à la ligne :
.ExportAsFixedFormat OutputFileName:=path & "\Sortie\" & nom & ".pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
Je ne vois pas ce qui peut coincer.
Message édité par Erasme le 12-04-2021 à 17:28:35