Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Publipostage WORD à partir d'ACCESS

2 réponses
Avatar
kharon91
Depuis que je suis passé à OFFICE 2003 je n'arrive pas à utiliser une
fonction de publipostage avec WORD. Cette fonction s'arrête systématiquement
à l'instruction :

"wdapp.ActiveDocument.MailMerge.Execute"
en me signalant que le document WORD qui est chargé n'est pas un document
principal permettant le publipostage. Hors si je fais un essais de
publipostage avec WORD il retrouve bien la requête ACCESS et le publipostage
fonctionne. C'est comme si le document chargé à partir d'ACCESS perdait les
informations de publipostage.

J'ajoute que ça marchait sans problème avec OFFICe 2000. Si quelqu'un était
inspiré???? Merci.

Code dans ACCESS utilisé pour générer la fonction de publipostage :

Function Word_FAX_MSA() ' Edition du FAX pour la MSA
Dim MyDB As Database
Dim En As Recordset
Set MyDB = CurrentDb()

Set En = MyDB.OpenRecordset("A-WORD-FAX-MSA-rq")
Dim Code_salarié As String
Dim CONTRAT As String
Dim DateJ As String

DateJ = Year(Date) & "_" & Month(Date) & "_" & Day(Date)
En.MoveFirst
Code_salarié = En![Code-salarié] 'on isole le code
salarié!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Set En = MyDB.OpenRecordset("T-ETABLISSEMENT")
En.MoveFirst
' On Error Resume Next
Dim Chemin As String
Dim CheminM As String ' Les Modèles
Dim CheminR As String ' Le résultat

Chemin = En![Loc_Word] ' on indique où se trouvent les modeles dans la
table Etablissement
CheminM = Chemin & "\M\MSA_DUE.doc" '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CheminR = Chemin & "\R\MSA_DUE." & Code_salarié & "." & DateJ & ".doc"
'!!!!!!!!!!!!!!!!
On Error GoTo 0

Dim wdapp As Word.Application

'Démarrer Word
Set wdapp = CreateObject("Word.application")
' le code ci-dessous permet de faire apparaitre word
' en premier plan ou pas, false -> non et true -> oui
wdapp.Visible = True
'on ouvre le document

wdapp.Documents.Open CheminM

' execution du publipostage
wdapp.ActiveDocument.MailMerge.Execute


' je sauvegarde le fichier sous un
autre nom
wdapp.ActiveDocument.SaveAs CheminR
' je ferme le fichier
wdapp.ActiveDocument.Close
' je ferme l'application
wdapp.Application.Quit SaveChanges:=wdDoNotSaveChanges
' et j'avertis l'utilisateur que le
fichier word est crée
MsgBox "Le fichier WORD - FAX_MSA - est crée pour le salarié :" & CheminR
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Set wdapp = Nothing



End Function

2 réponses

Avatar
Raymond [mvp]
Bonjour.

au cas où, remplace:
Dim MyDB As Database
Dim En As Recordset
par
Dim MyDB As DAO.Database
Dim En As DAO.Recordset
si tu n'utilises pas ADO, supprimes les références à cette librairie.
tu trouveras quelques exemple de publipostage sur:
http://officesystem.access.free.fr/vba/publipostage.htm

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"kharon91" a écrit dans le message de
news:
| Depuis que je suis passé à OFFICE 2003 je n'arrive pas à utiliser une
| fonction de publipostage avec WORD. Cette fonction s'arrête
systématiquement
| à l'instruction :
|
| "wdapp.ActiveDocument.MailMerge.Execute"
| en me signalant que le document WORD qui est chargé n'est pas un document
| principal permettant le publipostage. Hors si je fais un essais de
| publipostage avec WORD il retrouve bien la requête ACCESS et le
publipostage
| fonctionne. C'est comme si le document chargé à partir d'ACCESS perdait
les
| informations de publipostage.
|
| J'ajoute que ça marchait sans problème avec OFFICe 2000. Si quelqu'un
était
| inspiré???? Merci.
|
| Code dans ACCESS utilisé pour générer la fonction de publipostage :
|
| Function Word_FAX_MSA() ' Edition du FAX pour la MSA
| Dim MyDB As Database
| Dim En As Recordset
| Set MyDB = CurrentDb()
|
| Set En = MyDB.OpenRecordset("A-WORD-FAX-MSA-rq")
| Dim Code_salarié As String
| Dim CONTRAT As String
| Dim DateJ As String
|
| DateJ = Year(Date) & "_" & Month(Date) & "_" & Day(Date)
| En.MoveFirst
| Code_salarié = En![Code-salarié] 'on isole le code
| salarié!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
| Set En = MyDB.OpenRecordset("T-ETABLISSEMENT")
| En.MoveFirst
| ' On Error Resume Next
| Dim Chemin As String
| Dim CheminM As String ' Les Modèles
| Dim CheminR As String ' Le résultat
|
| Chemin = En![Loc_Word] ' on indique où se trouvent les modeles dans la
| table Etablissement
| CheminM = Chemin & "MMSA_DUE.doc"
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
| CheminR = Chemin & "RMSA_DUE." & Code_salarié & "." & DateJ & ".doc"
| '!!!!!!!!!!!!!!!!
| On Error GoTo 0
|
| Dim wdapp As Word.Application
|
| 'Démarrer Word
| Set wdapp = CreateObject("Word.application")
| ' le code ci-dessous permet de faire apparaitre word
| ' en premier plan ou pas, false -> non et true -> oui
| wdapp.Visible = True
| 'on ouvre le document
|
| wdapp.Documents.Open CheminM
|
| ' execution du publipostage
| wdapp.ActiveDocument.MailMerge.Execute
|
|
| ' je sauvegarde le fichier sous un
| autre nom
| wdapp.ActiveDocument.SaveAs CheminR
| ' je ferme le fichier
| wdapp.ActiveDocument.Close
| ' je ferme l'application
| wdapp.Application.Quit SaveChanges:=wdDoNotSaveChanges
| ' et j'avertis l'utilisateur que
le
| fichier word est crée
| MsgBox "Le fichier WORD - FAX_MSA - est crée pour le salarié :" & CheminR
| '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
| Set wdapp = Nothing
|
|
|
| End Function
Avatar
kharon91
Bonjour,

Merci pour ta proposition. Ca n'améliore pas la situation, j'ai toujours la
même erreur.

Kharon91


Bonjour.

au cas où, remplace:
Dim MyDB As Database
Dim En As Recordset
par
Dim MyDB As DAO.Database
Dim En As DAO.Recordset
si tu n'utilises pas ADO, supprimes les références à cette librairie.
tu trouveras quelques exemple de publipostage sur:
http://officesystem.access.free.fr/vba/publipostage.htm

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"kharon91" a écrit dans le message de
news:
| Depuis que je suis passé à OFFICE 2003 je n'arrive pas à utiliser une
| fonction de publipostage avec WORD. Cette fonction s'arrête
systématiquement
| à l'instruction :
|
| "wdapp.ActiveDocument.MailMerge.Execute"
| en me signalant que le document WORD qui est chargé n'est pas un document
| principal permettant le publipostage. Hors si je fais un essais de
| publipostage avec WORD il retrouve bien la requête ACCESS et le
publipostage
| fonctionne. C'est comme si le document chargé à partir d'ACCESS perdait
les
| informations de publipostage.
|
| J'ajoute que ça marchait sans problème avec OFFICe 2000. Si quelqu'un
était
| inspiré???? Merci.
|
| Code dans ACCESS utilisé pour générer la fonction de publipostage :
|
| Function Word_FAX_MSA() ' Edition du FAX pour la MSA
| Dim MyDB As Database
| Dim En As Recordset
| Set MyDB = CurrentDb()
|
| Set En = MyDB.OpenRecordset("A-WORD-FAX-MSA-rq")
| Dim Code_salarié As String
| Dim CONTRAT As String
| Dim DateJ As String
|
| DateJ = Year(Date) & "_" & Month(Date) & "_" & Day(Date)
| En.MoveFirst
| Code_salarié = En![Code-salarié] 'on isole le code
| salarié!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
| Set En = MyDB.OpenRecordset("T-ETABLISSEMENT")
| En.MoveFirst
| ' On Error Resume Next
| Dim Chemin As String
| Dim CheminM As String ' Les Modèles
| Dim CheminR As String ' Le résultat
|
| Chemin = En![Loc_Word] ' on indique où se trouvent les modeles dans la
| table Etablissement
| CheminM = Chemin & "MMSA_DUE.doc"
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
| CheminR = Chemin & "RMSA_DUE." & Code_salarié & "." & DateJ & ".doc"
| '!!!!!!!!!!!!!!!!
| On Error GoTo 0
|
| Dim wdapp As Word.Application
|
| 'Démarrer Word
| Set wdapp = CreateObject("Word.application")
| ' le code ci-dessous permet de faire apparaitre word
| ' en premier plan ou pas, false -> non et true -> oui
| wdapp.Visible = True
| 'on ouvre le document
|
| wdapp.Documents.Open CheminM
|
| ' execution du publipostage
| wdapp.ActiveDocument.MailMerge.Execute
|
|
| ' je sauvegarde le fichier sous un
| autre nom
| wdapp.ActiveDocument.SaveAs CheminR
| ' je ferme le fichier
| wdapp.ActiveDocument.Close
| ' je ferme l'application
| wdapp.Application.Quit SaveChanges:=wdDoNotSaveChanges
| ' et j'avertis l'utilisateur que
le
| fichier word est crée
| MsgBox "Le fichier WORD - FAX_MSA - est crée pour le salarié :" & CheminR
| '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
| Set wdapp = Nothing
|
|
|
| End Function