Macro Publipostage vers un document DOCX + un autre PDF

Bonjour à tous,

Je fais appel à vous pour que vous puissiez m'aider après 4 jours de recherches intensive :(
J'ai épluché tous les sujet sur le net avec différentes macro mais j'en ai aucune qui arrive au résultat attendu :(

J'ai un contrat sur Word avec une base de données sur Excel que je veux publiposter vers un document qui s'enregistre avec une nomenclature spécifique en DOCX mais également en PDF avec la même nomenclature.

cette nomenclature est la 1ere colonne du fichier Excel "Nom"

j'ai essayé différentes macro mais aucune n'arrive à aller au bout du cheminement.

sur celle ci dessous, ca ne génère aucun pdf et j'ai des erreurs d'enregistrements ainsi qu'une erreur ici : nfichier = Left(nfichier, intpos - 1) que je ne comprends pas :(

Dim DocName As String
Dim chemin As String

Public Sub GenerationDocuments()

' Déclaration des variables
Dim recordCount As Integer
Dim index As Integer
Dim oDoc As Document
Dim oDS As MailMergeDataSource

' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource

recordCount = oDoc.MailMerge.DataSource.recordCount
Debug.Print recordCount & "nom"

For index = 1 To recordCount
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = index

.DataSource.LastRecord = index

' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument

' Exécution du publipostage
.Execute

' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = index

'Utilisation de deux champs pour obtenir le nom du document
DocName = .DataSource.DataFields("Nom")
DocName = DocName & "-" & .DataSource.DataFields(4).Value
Debug.Print DocName; index
End With
' Sauvegarde du document publiposté
chemin = "C:\Users\XXXX\OneDrive - ACCOR\Desktop\Publipostage AAA\" & DocName & ".doc"
With ActiveDocument
.SaveAs chemin
End With
Next index
'enregistre en PDF
VersPDF
End Sub

Sub VersPDF()
Dim nfichier As String, nfichier2 As String, intpos As Byte
nfichier = DocName
'trouve la position de l'extension
intpos = InStrRev(nfichier, ".")
'remplace l'extension doc par pdf
nfichier = Left(nfichier, intpos - 1)
nfichier2 = nfichier & ".pdf"
'enregistre dans le dossier en cours
ActiveDocument.ExportAsFixedFormat outputFileName:=chemin & nfichier2, exportFormat:=wdExportFormatPDF, OpenAfterExport:=False
ActiveDocument.Close savechanges:=False
End Sub

voici la plus aboutie selon moi mais j'ai une erreur lors de la création des fichiers DOC et PDF.

quelqu'un aurait la gentillesse de m'aider svp?

Voici les 2 fichiers concernés: PUBLI.zip

merci beaucoup par avance

Guillaume
Windows / Chrome 109.0.0.0

Bonjour

sauf erreur de ma part les fichiers ne sont pas disponibles

Fred

Bonsoir

toutes mes excuses j’avais mis le lien mais il a dû sauté à la publication. Et voici qui est résolu dorénavant

merci à toi par avance

11publi.zip (33.71 Ko)

Bonjour

je me penche sur votre problème dans la journée

Fred

Re bonjour

voici donc une proposition...

condition nécessaire à l'exécution du code :

  • le fichier source word du publipostage doit être fermé
  • le fichier source xlsx de base de données doit être fermé

J'ai laissé donc une option pour le chemin d'enregistrement des fichiers publipostés

  • soit on utilise la case A2 du fichier joint
  • soit on met le chemin en dure dans le code..

il faut donc adapter cette partie dans le code : (pour le moment c'est le contenu de la cellule A2 qui est paramétré)

Attention le dernier caractère doit être obligatoirement "\"

'******************************************************************
    'Chemin = "c:\users\xxxxxx\Downloads\publi\"
    Chemin = [A2]
'******************************************************************

Fonctionnement du fichier fournit :

lors de l'exécution du code je demande :

1) de renseigner le fichier base de données source xlsx

2) de renseigner le fichier modèle word

ils peuvent être dans des dossiers différents

le publipostage s'exécute et voici un aperçu du résultat :

image

Fred

21publi-neotrax.xlsm (21.67 Ko)

J'ai oublié de préciser, si les fichiers de destination existent, ils sont écrasés sans avertissement..

Fred

Merci à toi, je teste cela d'ici ce soir, et je te tiens au courant.

merci beaucoup pour ton aide en tout cas:)

belle journée

Bonjour Fred,

Comme promis, j'ai donc testé la macro.
Malheureusement, après avoir sélectionner les 2 documents Word & excel, j'ai une fenetre qui s'ouvre avec cette erreur.

2023 02 07 15 28 26

malgré cette erreur, il m'ouvre une fenetre ou je pense devoir indiquer le fichier de base données excel :

2

je sélectionne le fichier de données , il termine le processus:

fin

cependant aucun fichier ne sait générer :(

aurais tu une idée du soucis? c'est normal qu'il m'ouvre une fenêtre access?

merci à toi :)

Bonjour

a priori le soucis vient de là..

image

merci de faire un essai.. en ayant fermé toutes les applications et n'ouvrir que le fichier fournit... adapter le chemin de destination dans la cellule A2 si c'est pas déjà fait. et cliquer sur le bouton...

et autre question quelle version d'office est utilisée ?? cela ressemble une vielle version genre 2003...

Fred

J'ai trouvé .... mon nom d'onglet était différent du fichier anonymisé que je t'avais envoyé.
Je fais les derniers ajustements, car j'ai des noms de fichiers avec des "/" ou autres caractères spéciaux, j'essaye d'insérer ce code dans la macro, car sinon ca bloque le publipostage ..

DocName = Replace(DocName, "/", "-")
DocName = Replace(DocName, "\", "-")
DocName = Replace(DocName, "?", "")
DocName = Replace(DocName, "*", "")

mais merci , cela semble fonctionner parfaitement, je suis à fond dessus la :)

Effectivement il y a des caractères interdits dans les noms de fichiers...

Fred

Hello Fred

Dernière question. Tu placerais ou toi la série de Replace dans ton code car j’ai essayé plusieurs positions cela coince encore :(

merci à toi

Bonjour

juste après la récupération du contenu de la cellule de la colonne A...

sa voir après cette ligne :

      DocName = .DataSource.DataFields(1).Value

Fred

Rechercher des sujets similaires à "macro publipostage document docx pdf"