Bonjour à tous !
Je vais essayer d'être clair.
Via un bouton, j'exécute une requête qui me fusionne un document Word avec l'enregistrement en cours et crée un nouveau fichier .doc. Ca fonctionne bien, sauf sur un point.
Mon problème se situe au niveau de la liaison avec l'enregistrement en cours.
Si je rentre le numéro manuellement comme critère dans ma requête, tout fonctionne bien, le document se crée et s'enregistre sans intervention de la part de l'utilisateur.
Mais si j'utilise une syntaxe du style : Forms!MonFormulaire!MonChamp, a chaque fois à l'ouverture du document je dois sélectionner la requête dans une fenêtre "Sélectionner une table" qui s'ouvre alors.
Je ne comprends vraiment pas d'où vient le problème !
Voici le code avec l'utilisation de la requête :
Donc pour être bref, le code ci-dessus fonctionne si le paramètre est en dur dans la requête, et m'affiche une fenêtre de "sélection de table" si j'utilise une référence au formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
56
57
58
59
60
61
62
63 Private Sub Commande328_Click() Dim FichierSource As String Dim CheminFichierFusion As String Dim NomFichierFusion As String Dim SQL As String '==================================================================== 'PARAMèTRES FichierSource = "C:\Documents and Settings\Marc-Alexandre\Bureau\DCD Bericht und Zusage.doc" CheminFichierFusion = "C:\Documents and Settings\Marc-Alexandre\Bureau\" NomFichierFusion = "Fichier fusionné.doc" '===================================================================== 'Voici pour la déclaration du code: Dim wdapp As Word.Application, wddoc As Word.Document 'Démarrer Word Set wdapp = CreateObject("Word.application") With wdapp .Visible = False 'ouvrir le document "modèle" Set wddoc = wdapp.Documents.Open(FichierSource) 'Diriger le publipostage vers un nouveau document "final" wddoc.MailMerge.MainDocumentType = wdFormNormal wddoc.MailMerge.OpenDataSource Name:= _ Application.CurrentDb.Name, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=wdOpenFormatAuto, Connection:="Provider=Microsoft.Jet.OLEDB.4.0" _ , SQLStatement:="SELECT * FROM `Sites Requete pour décision`" ', SQLStatement1:="", SubType:=wdMergeSubTypeOther wddoc.MailMerge.Execute ' enregistrer le document "final" provenant de l'exécution de la fusion .ActiveDocument.SaveAs CheminFichierFusion & NomFichierFusion ' fermer le document "modèle" wddoc.Close Set wddoc = Nothing ' à ce stade, le document "final" est encore affiché 'fermer et libérer les objets wdapp.Documents.Close wdapp.Quit Set wdapp = Nothing End With MsgBox ("Document Word " & CheminFichierFusion & NomFichierFusion & " créé avec succès."), vbInformation End Sub
Je sais que ça ne se fait pas mais :
Partager