bonjour,
Il existe une différence entre la fusion et le publipostage.
Pour la fusion il s'agit:
d'un document Word avec des signets
Puis le pilotage depuis access
personnellement j'utilise un code pour faire des fusions d'un enregistrement d'access vers Word:
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| Dim appWd As Word.Application
Dim WordDoc As Word.Document
Dim erreur As Long
Dim Nix
erreur = 0
On Error Resume Next 'See if Word is running
' vérifie que word est ouvert sinon l'ouvre
Set appWd = GetObject(, "Word.Application")
If Err.Number <> 0 Then 'Word Not running
Err.Clear ' Clear Err object in case error occurred.
Set appWd = CreateObject("Word.Application")
Else
appWd.Activate
End If
With appWd
' ouverture du document
.Documents.Add Template:=Chr(34) & Me![Modele] & Chr(34)
' sélection du signet "Adresse"
.ActiveDocument.Bookmarks("Adresse").Select
If Err.Number = 5941 Then
erreur = 1
Err.Clear
Else
' remplissage du signet " adresse" dans le document word
.Selection.InsertAfter Nz(Me![Titre]) & vbCrLf
If Not Nz(Me![N_Nom]) = "" Then
.Selection.InsertAfter Nz(Me![N_Nom]) & vbCrLf
End If
If Not Nz(Me![N_Comp]) = "" Then
.Selection.InsertAfter Nz(Me![N_Comp]) & vbCrLf
End If
If Not Nz(Me![N_Comp2]) = "" Then
.Selection.InsertAfter Nz(Me![N_Comp2]) & vbCrLf
End If
If Not Nz(Me![N_Adresse]) = "" Then
.Selection.InsertAfter Nz(Me![N_Adresse]) & vbCrLf
End If
If Not Nz(Me![N_NPA]) = "" Then
.Selection.InsertAfter Nz(Me![N_NPA] & " " & Me![N_Localite])
End If
End If
' recherche d'autre signet
.ActiveDocument.Bookmarks("Titre1").Select
If Err.Number = 5941 Then
erreur = 1
Err.Clear
Else
.Selection.InsertAfter Nz(Me![Titre])
End If
.ActiveDocument.Bookmarks("Titre2").Select
If Err.Number = 5941 Then
erreur = 1
Err.Clear
Else
.Selection.InsertAfter Nz(Me![Titre])
End If
If erreur = 1 Then
Nix = MsgBox("Dans le document choisi il manque des signets" & _
vbCrLf & "Document choisi : " & Me![Modele], _
vbCritical, "Message sur la fusion")
End If
.Visible = True
'Maximieren
.WindowState = wdWindowStateMaximize
.ActiveDocument.Bookmarks("Adresse").Select
' .Quit
End With
Set appWd = Nothing |
c'est assez laborieu car il faut que les signets existent dans le document word pour être remplacé
c'est très utile par exemple pour remplir des adresses dans des lettres types et certaines valeurs
j'espère avoir éclairé ta lanterne
Partager