Publipostage d'étiquettes choix par liste

Borismy

XLDnaute Occasionnel
Bonjour,
je souhaite modifier une macro de publipostage d'étiquettes, le choix de la base est inscrit en "dur"
Code:
SQLStatement:="SELECT * FROM [Labels_un$]"
où [Labels_un$] est le nom de l'onglet où se trouve la base de donnée, je souhaite pouvoir faire le choix dans une liste d'onglets qui se trouve dans la 1ere feuille où est également le bouton qui lance la macro, quelqu'un aurait-il une solution.

Merci d'avance

Boris
 

Pièces jointes

  • Etiquettes.zip
    19.4 KB · Affichages: 29
  • Etiquettes.zip
    19.4 KB · Affichages: 37
  • Etiquettes.zip
    19.4 KB · Affichages: 41

Borismy

XLDnaute Occasionnel
Re : Publipostage d'étiquettes choix par liste

N'ayant pas trouvé, j'ai opté pour la création d'une feuille "Temp", je me suis inspiré de ce fil:
PHP:
http://www.excel-downloads.com/forum/172164-definir-docword-pour-des-etiquettes-dans-macro-autom-publipostage.html


Code:
Sub Mailing()
    'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String
    Dim MaPlage As Range
    'ccccccccccccccccccccc
    SupprimerPDFCreator
    'ccccccccccccccccccccc
    
    NomBase = "E:\E_tiquettes\CONTACT_CARTES_ACCES_jlm 08_12_14_revision_2ym.xls"
    
  Dim sh1 As Worksheet
    Set sh1 = Sheets(Sheets("menu").Range("c1").Text) 'Worksheets([D3])
    Application.ScreenUpdating = False
    
    ' ***************************************************************
    ' Export des données vers une feuille Temp ayant O en colonne A
    ' ****************************************************************
    Worksheets.Add().Name = "Temp"
   
    sh1.Activate
    
    With ActiveSheet
   
    Cells.Select
    Selection.Copy
    End With
    Sheets("Temp").Select
    Cells.Select
    ActiveSheet.Paste
   
    ' ******************************************
    ' Début du mailing
    ' ******************************************
    'Application.ScreenUpdating = False
    Set appWord = New Word.Application
    appWord.Visible = True
    'Ouverture du document principal Word
    Set docWord = appWord.Documents.Open("E:\E_tiquettes\Matrice_etiquettes1.doc")
    'Fonctionnalité de publipostage pour le document spécifié
    With docWord.MailMerge
        'Ouvre la base de données
        .OpenDataSource Name:=NomBase, _
                        Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                                    "DBQ=" & NomBase & "; ReadOnly=True;", _
                        SQLStatement:="SELECT * FROM [Temp$]"
        'Spécifie la fusion vers l'imprimante
        .Destination = wdSendToPrinter
        .SuppressBlankLines = True
        'Prend en compte l'ensemble des enregistrements
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        'Exécute l'opération de publipostage
        .Execute Pause:=False
    End With
  
    Application.ScreenUpdating = True
    'Fermeture du document Word
    docWord.Close False
    appWord.Quit
    ' ***************************************
    ' Suppression de la feuille temporaire
    ' ***************************************
    Sheets("Temp").Select
    Application.DisplayAlerts = False
    ActiveWindow.SelectedSheets.Delete
    Application.DisplayAlerts = True
End Sub

A +

Boris
 

Discussions similaires

Réponses
5
Affichages
199

Statistiques des forums

Discussions
312 146
Messages
2 085 764
Membres
102 967
dernier inscrit
Syl34