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 Sub

J'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 Sub

Comment 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 !!!

14etipx-copie.docm (18.88 Ko)

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.Quit

Mais 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 Sub

J'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!

Rechercher des sujets similaires à "macro publipostage planche etiquette"