Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 4 sur 4
  1. #1
    Je viens quérir un peu d'aide.

    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

    ' 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:="C:\test" & 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:="C:\test" & Nom & ".pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
    '.ActiveWindow.Close
    End With
    Next i
    End Sub
    Tout se fait bien mais :

    Premier point :
    A la fin de l'exécution j'obtiens une erreur (oui ça fonctionne mais bon, c'est pas propre) :


    C'est manifestement lié à la ligne :
    .ExportAsFixedFormat OutputFileName:="C:\test" & Nom & ".pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
    Je ne vois pas ce qui peut coincer.

    Deuxième point :
    Le dossier de sortie est mis en dur à deux endroits.
    .SaveAs FileName:="C:\test" & Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd") & Format(Time, "hhmm") & ".doc"
    .ExportAsFixedFormat OutputFileName:="C:\test" & Nom & ".pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
    Comment faire pour que soit en chemin relatif ? J'aimerais que ce soit au même endroit que le fichier word, ou mieux dans un sous-dossier, sans avoir à préciser le disque etc.
    Dernière modification par Endymion ; 12/04/2021 à 00h09.

  2. #2
    J'ai réussi à enregistrer en chemin relatif avec :
    Dim path As String
    path = Application.ActiveDocument.path
    Reste le message d'erreur.

    Macro complète :
    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 & "" & 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 & "" & nom & ".pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
    '.ActiveWindow.Close
    End With
    Next i
    End Sub

  3. #3
    T'as pas un ligne à blanc dans ton Excel ? Ça fait quoi en debug ?

  4. #4
    Citation Envoyé par deathdigger Voir le message
    T'as pas un ligne à blanc dans ton Excel ? Ça fait quoi en debug ?
    Et en effet, c'est à cause des lignes vides, j'aurais du y penser...

    J'ai du revoir la ligne nommant les fichiers pdf pour simplifier le fichier excel. J'avais mis fait une concaténation et donc créé des lignes vides par avance pour éviter des erreurs de saisie.
    Tout est bon maintenant.

    Merci.
    Dernière modification par Endymion ; 13/04/2021 à 00h58.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •