Bonjour bonjour,

Voila j'ai une BDD access séparé en deux
- un fichier client (dans le dossier : file_bddc) avec requetes formulaires etats
- un fichier serveur (dans le dossier : file_bdd) avec les tables
- un fichier sécurité .mdw (dans le dossier file_bddw)

Je souhaiterais faire un publipostage dans word en cliquant sur un bouton dans Access. J'ajoute la librairie "Microsoft Word Object Library" afin de me servir du mail merge.

Voila le début de mon code qui fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Dim objDoc As Word.Document
Dim file As String
 
file = "adresse de mon fichier a publier"
fermer_fichier_word (file) 'ferme le fichier si ouvert
Set objDoc = GetObject(file, "Word.document")
objDoc.Application.Visible = True
C'est a partir de la que ca se complique.
- Ou bien je reussi a me connecter directement au fichier serveur file_bdd
- Ou bien je cree une table en local sur file_bddc et connecte word a cette table
Aucune des deux solutions ne fonctionne, a savoir que je preferai me connecter directement a la base pour ne pas avoir a modifier le fichier en local.

1 SOLUTION : connection au fichier distant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Dim strConnection As String
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Password=""motdepasse"";" & _
    "User ID=user;Data Source=" & file_bdd & ";" & _
    "Mode=Read;Jet OLEDB:System database=" & file_bddw & ";"
 
Dim sql As String
sql = "Requete SQL qui fonctionne parfaitement en la mettant directement dans access"
 
objDoc.MailMerge.OpenDataSource _
       Name:=file_bdd, _
       Connection:=strConnection, _
       SQLStatement:=sql
Cela m'ouvre une fenetre me permettant de choisir une table de file_bdd.
J'en choisi une bien que je souhaite prendre des informations de plusieurs tables liées entre elles.

Apres cela : Erreur 5922 "Word n'a pas pu ouvrir la source de données." (déboguage sur le OpenDataSource)

2 SOLUTION : Creation d'une table en local replique de la requete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Dim strConnection As String
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Password=""motdepasse"";" & _
    "User ID=user;Data Source=" & file_bddc & ";" & _
    "Mode=Read;Jet OLEDB:System database=" & file_bddw & ";"
 
Dim sql As String
sql = Requete SQL qui fonctionne parfaitement en la mettant directement dans access creant "MergeTable"
DoCmd.RunSQL (sql)
 
objDoc.MailMerge.OpenDataSource _
        Name:=CurrentDb.Name, _
        Connection:=strConnection, _
        SQLStatement:="SELECT * FROM [MergeTable]"
Erreur => "Une erreur s'est produite: La base de données a été placée par l'utilisateur "Admin" sur "Pc-utilisateur" dans un état l'empechant d'etre ouverte ou vérouillée."
Puis m'ouvre une fenetre "proprietes des liaisons de données", je reconfigure avec l'assistant, toujours la meme erreur.
Derriere Access a toujours la meme erreur 5922.

Si quelqu'un pouvait m'aider a configurer correctement cette OpenDataSource. Le mieux serait de se connecter directement au fichier distant. Ou bien pouvoir directement transmettre un Recordset a Word sans avoir a réouvrir la base.

Merci pour votre aide cela fait une semaine que je recherche une solution a mon problème !

Gabvoir