Bonjour
je tourne en rond (et en boucle sur les forums) sur un sujet pourtant simple :
j'ai un document modèle Word que je remplissais auparavant avec les données issues d'une feuille Excel via une macro Excel.
J'ai maintenant mis toutes mes données qui étaient auparavant stockée sous excel dan une Bdd ACCESS.
à partir du même document modèle (.docx) memorisé sans lien avec une liste existante :
- avec les données issues d'Excel j'obtiens toujours bien un document word personalisé. je l'ouvre sans que word ne me pose de question et j'ai bien les champs remplit comme souhaité
- mais en exécutant la requête de publipostage en allant chercher les données dans Access, j'obtiens au final quasiment le même document que le document modèle (pas de message comme quoi la commande merge n'aurait pas pu s'éxécuter)
à l'ouverture du word j'ai le message qui me dit "l'ouverture de ce document exécutera la commande SQL suivante (et j'ai la commande bonne commande SQL en dessous ' "SELECT * FROM [BDD_PUBLIPOSTAGE] WHERE [PB_ID] = 2) , ... voulez-vous continuer ? " et que je réponde 'oui' ou 'non' (comme je n'ai pas de lien vers une liste existante) j'obtiens le doc avec mes champs non remplit ...
voici mon code pour le publipostage données issues d'Excel :
Base = REPERTOIRE_ENCOURS & "\" & ActiveWorkbook.Name
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True ' False
Set WordDoc = WordApp.Documents.Open(Model, ReadOnly:=False)
With WordDoc.MailMerge
.OpenDataSource Name:=Base, Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & Base & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [BDD_PUBLIPOSTAGE$]"
.suppressBlankLines = True
With .DataSource
.firstRecord = PB_ligne
.lastRecord = PB_ligne
End With
'Exécute l'opération de publipostage
.Execute Pause:=False
End With
WordDoc.Application.ActiveDocument.SaveAs Fiche
WordDoc.Close
WordApp.Quit
et mon code de publipostage données issues d'ACCESS
Base = REPERTOIRE_ENCOURS & "\ACV_BDD.accdb"
Dim reqSQL As String
reqSQL = "SELECT * FROM [BDD_PUBLIPOSTAGE] WHERE [PB_ID] = " & PB_ligne
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True ' False
Set WordDoc = WordApp.Documents.Open(Model, ReadOnly:=False)
WordDoc.MailMerge.OpenDataSource _
Name:=Base, _
LinkToSource:=True, _
Connection:="TABLE [BDD_PUBLIPOSTAGE]", _
SQLStatement:=reqSQL
WordDoc.Application.ActiveDocument.SaveAs Fiche
WordDoc.Close
WordApp.Quit
j'ai fait plusieurs tests avec le même document modèle avec ou sans lien vers liste existant (Excel ou Access) et j'ai les même résultats ...