Macro pour publipostage planche d'étiquette
Bonjour à toutes et tous,
Je débute dans VBA et cherche à créer une macro qui générerait une édition PDF de 3 planches d'étiquettes.
Le répertoire des modèle de publipostage est toujours le même mais la destination de ces publipostages est toujours différente.
Je part du fichier excel qui comporte une trentaine d'onglet dont 3 me servent à créer mes étiquettes publipostées (aujourd'hui manuellement
J'imaginais pouvoir choisir le répertoire de destination des PDF via une boite de dialogue qui me définirait le chemin de sauvegarde, le même pour les 3 planches.
Les noms des fichiers PDF à générer sont dans 3 cellules distinctes sur ma 1ère page.
J'ai joint mon fichier excel (simplifié avec les seuls onglets concernés et des données anonymisées)
J'arrive pour l'instant à ceci dans excel :
Sub publipost_ETI()
'choix du dossier de sauvegarde
Dim objShell As Object, objFolder As Object, oFolderItem As Object
Dim Chemin_du_dossier_de_sauvegarde As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir le répertoire de sauvegarde des étiquettes", &H1&)
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
Chemin_du_dossier_de_sauvegarde = oFolderItem.Path
'définition des noms des planches étiquettes
Dim nom_ETIPX As String
Dim nom_ETIQUINC As String
Dim nom_ETIDEBIT As String
nom_ETIPX = Sheets("Calep").Range("D1").Value
nom_ETIQUINC = Sheets("Calep").Range("D2").Value
nom_ETIDEBIT = Sheets("Calep").Range("D3").Value
MsgBox ("Le chemin de sauvegarde des étiquettes sera : " & Chemin_du_dossier_de_sauvegarde)
MsgBox ("Le nom des étiquettes panneaux sera : " & vbCr & nom_ETIPX & vbCr & vbCr & "Le nom des étiquettes quincailerie sera : " & vbCr & nom_ETIQUINC & vbCr & vbCr & "Le nom des étiquettes débit sera : " & vbCr & nom_ETIDEBIT)
End SubJ'ai essayé l’enregistreur de macro Word mais ne sait pas comment intégrer le code généré dans ma macro, ni comment remplacer les chemins et sources par mes variables précédemment définis.
Dans Word, le code issu de l'enregistrement est le suivant :
Sub Macro_publipostage_panneaux()
'
' Macro_publipostage_panneaux Macro
'
'
ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Users\clouh\Desktop\4589 TOTO Test Etiquettes-1.xlsm", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\clouh\Desktop\4589 TOTO Test Etiquettes-1.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=35;Jet OLEDB:" _
, SQLStatement:="SELECT * FROM `'Etipx (2)$'`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ChangeFileOpenDirectory _
"C:\Users\clouh\Desktop\Destination sauvegarde\dossier1\sous dossier de sauvegarde0.1\"
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\Users\clouh\Desktop\Destination sauvegarde\dossier1\sous dossier de sauvegarde0.1\4589 TOTO.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
Windows("ETIPX - Copie.docm").Activate
End SubComment puis-je procéder pour lancer mes publipostages avec ces éléments?
Quelqu'un as-t-il un début de piste pour moi?
D'avance merci !!!
Petit up,
La macro du publipostage s'exécutant dans word, c'est bien depuis word que je dois la lancer...
j'arrive à la lancer depuis excel avec :
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = Thrue
'chemin du modèle étiquettes panneaux
wordApp.Documents.Open ("C:\Users\clouh\Desktop\ETIPX -001.docm")
'macro à exécuter dans le modèle précédement sélectionné
wordApp.Run "PUBLIPOSTAGE_PX.EXPORT_PDF_ETIPX"
'quitter word
wordApp.QuitMais 2 questions restent entières :
- Comment récupérer dans word mes variables précédemment déclarées sous excel ?
- Comment remplacer le chemin en dur par ma/mes variable(s)?
Sub EXPORT_PDF_ETIPX()
'Boite de dialogue pour choisir un fichier
Dim finput As FileDialog
Dim SRC_XL As String
Set finput = Application.FileDialog(msoFileDialogOpen)
finput.Show
SRC_XL = finput.SelectedItems(1)
'SELECTION_SRC_EXCEL Macro
'
'
ActiveDocument.MailMerge.OpenDataSource Name:= _
"[b]C:\Users\clouh\Desktop\4589 TOTO Test Etiquettes-75.xlsm[/b]", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=[b]C:\Users\clouh\Desktop\4589 TOTO Test Etiquettes-75.xlsm[/b];Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB" _
, SQLStatement:="SELECT * FROM `'Etipx (2)$'`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ChangeFileOpenDirectory _
"C:\Users\clouh\Desktop\Destination sauvegarde\TEST 3003-1\"
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\Users\clouh\Desktop\Destination sauvegarde\TEST 3003-1\4589 TAT ETIPX-001.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
ActiveDocument.Close
ActiveDocument.Close (wdDoNotSaveChanges)
End SubJ'ai tenté de procéder par étape et redéclarer dans word ma variable "SRC_XL", puis remplacer le chemin par "& SRC_XL &", mais lors de l'exécution, j'ai une fenêtre
"confirmer la source de données" avec un seul choix en standard, "Fichiers de base de données OLE DB".
Puis la macro plante, avec un : impossible de trouver la source de données
Je suis vraiment bloqué et ne vois pas comment avancé
Votre aide est vraiment la bienvenue...
A vous lire.
Bonjour,
J'ai avancé et arrive maintenant à utiliser ma variable dans le chemin !
ActiveDocument.MailMerge.OpenDataSource Name:=SRC_XL_PX, _Il ne fallait pas de & avant ma variable.
Je souhaite maintenant récupérer mes variables déclarées précédemment dans excel pour les inclurent dans la macro word.
Quelqu'un pourrait-il m'aiguiller ?
D'avance merci!