Imprimer le dernier enregistrement publipostage VBA Excel

Bonjour

je reviens vers vous aujourd’hui car je ne sais pas comment m'y prendre et si c'est possible!

Je souhaiterais effectuer un publipostage vers Word de données contenues dans mon fichier excel, en cliquant sur un bouton me imprimer

que le dernier enregistrement. le code pour le moment me imprime tous les enregistrements; voici le code:

Private Sub CommandButton5_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

NomBase = "\\192.168.0.107\Google Drive\partage\POINTAGESVS\Nouveau dossier (2)\SIDALI.xlsm"

Application.ScreenUpdating = False

Set appWord = New Word.Application

appWord.Visible = True

'Ouverture du document principal Word

Set docWord = appWord.Documents.Open("\\192.168.0.107\Google Drive\partage\POINTAGESVS\Nouveau dossier (2)\contrat.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 [contrat$]"

'Spécifie la fusion vers l'imprimante

.Destination = wdSendToPrinter

.suppressBlankLines = True

'Prend en compte l'ensemble des enregistrements

With DataSource

.ActiveRecord = i - 1

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

Merci par avance de votre aide

Macro EXCEL pour publipostage avec ligne active

Je rencontre une grande difficulté pour réaliser une macro consistant à exécuter un publipostage à partir d'un fichier excel, et ce uniquement concernant la ligne active (selectionnée).

Je dispose une base de donnée excel, et d'un fichier word dont le publipostage et les champs sont déjà créés

Voici ma macro, qui fonctionne, mais en IMPRIMANT toutes les lignes!

Je souhaiterais imprimer que la dernier ligne enregistrer

Private Sub CommandButton5_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 lstrw As Long

NomBase = "C:\Users\SIDALI\Desktop\Nouveau dossier (2)\SIDALI.xlsm"

Application.ScreenUpdating = False

Set appWord = New Word.Application

appWord.Visible = True

'Ouverture du document principal Word

Set docWord = appWord.Documents.Open("C:\Users\SIDALI\Desktop\Nouveau dossier (2)\contrat.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 [contrat$]"

[u] 'Spécifie la fusion vers l'imprimante

.Destination = wdSendToPrinter

.suppressBlankLines = True

'Prend en compte l'ensemble des enregistrements

With .DataSource

.FirstRecord = wdDefaultFirstRecord

.LastRecord = wdDefaultLastRecord

[/u] 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

merci

22sidali.xlsm (243.59 Ko)
14contrat.docx (80.57 Ko)

Bonjour SIDALIADEM,

C'est facile, il suffit de récupérer le n° de contrat de la dernière ligne ou celui de la ligne sélectionnée pour l'inclure dans la clause Where de la requête Sql, comme ceci :

Dim lg As Long, num_contrat As Long, Entete As String

    With Sheets("contrat")
        lg = .Cells(Rows.Count, 1).End(xlUp).Row
    ' ou bien: lg = Selection.Row ' pour avoir la ligne sélectionnée
        num_contrat = .Cells(lg, "A")
        Entete = .Range("A1").Value
    End With

    ' ...
    SQLStatement = "SELECT * FROM [contrat$] WHERE " & Entete & " = " & num_contrat
    ' ...

Pierre

merci pierrep56 je vais essayer

Rechercher des sujets similaires à "imprimer dernier enregistrement publipostage vba"