Susuwatari
XLDnaute Nouveau
Bonjour,
Je débute depuis peu sur VBA et souhaite automatiser un envoi de mail à partir d'une base de données Excel (Commune, Département ...).
J'ai créer un formulaire Excel qui me permet d'ouvrir un document Word en publipostage. Le document Word se complète en fonction de la base de donnée.
Maintenant j'aimerais créer une macro me permettant d'enregistrer sous un format PDF le document Word qui se trouve sous mes yeux. J'aimerais par la même occasion modifier son nom par "Demande d'arrêté - "Commune en question".
Aujourd'hui mon problème est que le nom du PDF prend le nom de la commune du destinataire précédant.
Exemple :
Publipostage N°3 --> Paris
Publipostage N°4 --> Lyon
J'active ma macro en ayant le Word de Lyon sous les yeux, il s'enregistre sous format PDF cependant le nom du fichier est "Demande d'arrêté - Paris".
Voici le VBA en question :
Sub Word_to_PDF()
Dim chemin As String, nom As String
chemin = "C:\Users\dossier\"
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
nom = .DataSource.DataFields("Commune")
End With
ActiveDocument.ExportAsFixedFormat OutputFileName:= chemin & "Demande d'arrêté - " & nom & ".pdf" _
, ExportFormat:=wdExportFormatPDF, openafterexport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub
Avez vous une solution pour palier à ce problème ?
J'ai pensé a une décrémentation pour faire prendre la valeur du "Commune" du publipostage précédent mais je ne sais absolument pas comment faire ce genre de chose...
PS : lorsque je fais une recherche de destinataire pour trouver le publipostage de la commune qui m’intéresse, la recherche me place systématiquement sur le publipostage suivant. Exemple : Je cherche Paris (Publipostage N°3) et je tombe sur Lyon (Publipostage N°4).
PSPS : J'ai du ajouter une ligne vierge dans ma base de données car sinon les informations de ma première commune n'apparaissent pas en publipostage.
PSPSPS : J'ai constamment un publipostage vierge en dernière position.
Je vous indique ces précisions car je pensais que le problème de décalage de commune lors de l'enregistrement était lié au problème de décalage lors de la recherche de destinataire. Cependant je n'ai rien trouvé à ce propos sur internet...
J'espère avoir été assez clair dans mes explications et vous remercie d'avance pour votre aide,
Susuwatari
Je débute depuis peu sur VBA et souhaite automatiser un envoi de mail à partir d'une base de données Excel (Commune, Département ...).
J'ai créer un formulaire Excel qui me permet d'ouvrir un document Word en publipostage. Le document Word se complète en fonction de la base de donnée.
Maintenant j'aimerais créer une macro me permettant d'enregistrer sous un format PDF le document Word qui se trouve sous mes yeux. J'aimerais par la même occasion modifier son nom par "Demande d'arrêté - "Commune en question".
Aujourd'hui mon problème est que le nom du PDF prend le nom de la commune du destinataire précédant.
Exemple :
Publipostage N°3 --> Paris
Publipostage N°4 --> Lyon
J'active ma macro en ayant le Word de Lyon sous les yeux, il s'enregistre sous format PDF cependant le nom du fichier est "Demande d'arrêté - Paris".
Voici le VBA en question :
Sub Word_to_PDF()
Dim chemin As String, nom As String
chemin = "C:\Users\dossier\"
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
nom = .DataSource.DataFields("Commune")
End With
ActiveDocument.ExportAsFixedFormat OutputFileName:= chemin & "Demande d'arrêté - " & nom & ".pdf" _
, ExportFormat:=wdExportFormatPDF, openafterexport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub
Avez vous une solution pour palier à ce problème ?
J'ai pensé a une décrémentation pour faire prendre la valeur du "Commune" du publipostage précédent mais je ne sais absolument pas comment faire ce genre de chose...
PS : lorsque je fais une recherche de destinataire pour trouver le publipostage de la commune qui m’intéresse, la recherche me place systématiquement sur le publipostage suivant. Exemple : Je cherche Paris (Publipostage N°3) et je tombe sur Lyon (Publipostage N°4).
PSPS : J'ai du ajouter une ligne vierge dans ma base de données car sinon les informations de ma première commune n'apparaissent pas en publipostage.
PSPSPS : J'ai constamment un publipostage vierge en dernière position.
Je vous indique ces précisions car je pensais que le problème de décalage de commune lors de l'enregistrement était lié au problème de décalage lors de la recherche de destinataire. Cependant je n'ai rien trouvé à ce propos sur internet...
J'espère avoir été assez clair dans mes explications et vous remercie d'avance pour votre aide,
Susuwatari