Bonjour,
Personnellement j'ai réussi à le faire, j'ai tout d'abord créé un document word relié a ma table grâce au publipostage, j'y ai inséré les champs au endroit ou je le souhaitais et ensuite, dans Access, j'ai créé un module contenant la fonction de publipostage word ci-dessous et j'appel cette fonction que j'ai placé sur un bouton.
Cette fonction ouvre le document word de publipostage (CheminDocument) et va executer la requete sql (SQL) ceci ouvre un autre document Word contenant juste l'enregistrement avec le bon publipostage.
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
' ---
' PUBLIPOSTAGE AVEC WORD 2007
' ---
' Le résultat de la fusion reste affiché à l'écran.
'
' CheminDocument = Chemin du document Word à ouvrir
' SQL = Instruction SQL que l'on veut
Function Publipostage(CheminDocument As String, sql As String)
On Error GoTo errorPubli
Dim wdApp As Object
Dim wdDoc As Object
' Démarrer Word
Set wdApp = CreateObject("Word.Application")
With wdApp
' Rendre Word visible pour faciliter la mise au point
.Visible = True
' Ouvrir le document de publipostage
.Documents.Open CheminDocument
' Paramétrer le publipostage
With .ActiveDocument.MailMerge
.OpenDataSource Name:=CurrentProject.FullName, SQLStatement:=sql, ReadOnly:=True
' Diriger le publipostage vers un nouveau document plutôt que vers l'imprimante, le fax ou le mail
.Destination = wdSendToNewDocument
' Lancer la fusion
.Execute
End With
End With
' Fermer et libérer les objets
Set wdApp = Nothing
'Fermer Le document de Publipostage Word
'Récupère l'objet Word correspondant au document
Set wdDoc = GetObject(CheminDocument)
'On ferme le document sans enregistrer les changements
wdDoc.Close wdDoNotSaveChanges
'Libérer les objets
Set wdDoc = Nothing
Exit Function
errorPubli:
MsgBox "Une erreur est survenu !" & vbCrLf & _
"Erreur : " & Err.Number & " - Erreur sur le publipostage" & _
vbCrLf & Err.Description
wdApp.Close wdDoNotSaveChanges
wdDoc.Close wdDoNotSaveChanges
Set wdApp = Nothing
Set wdDoc = Nothing
Exit Function
End Function |
Enfin je remarque aussi que ta requête SQL est mauvaise, tu utilise :
SQLStatement:="SELECT * FROM [Jugement] WHERE [CLE_AFFAIRE]=stsql"
Alors qu'il faudrait l'écrire :
SQLStatement:="SELECT * FROM [Jugement] WHERE [CLE_AFFAIRE]='" & stsql & "';"
car tu essaye d'utiliser une variable déclaré plus haut a ce que je vois mais ta requete tu lui dit de chercher spécifiquement "stsql" et non le contenu de la variable, je pense que ceci peux résoudre ton problème aussi.
Partager