Bonjour,

J'ai besoin d'un petit coup de demain, j'automatise un publipostage word avec une plage excel comme base de données via un bouton. Mon problème est que je ne sais pas ou je peux spécifier la plage de données nommée Liste.

Merci de votre aide.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub CommandButton1_Click()
    '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 Nbligne
 
    Nbligne = Application.WorksheetFunction.CountA(Columns(1)) - 1
    NomBase = "C:\Users\X\Documents\PUBLIC.xlsm"
 
    Application.ScreenUpdating = False
    Set appWord = New Word.Application
    appWord.Visible = True
    'Ouverture du document principal Word
    Set docWord = appWord.Documents.Open("C:\Users\X\Documents\Elag.docx")
 
    '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 (*.xlsm)};" & "DBQ=" & NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Base$]"
        '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
End Sub