Voici comment je procède pour remplir les signets :
Dim w As Word.Application
Dim strFichier As String
Dim nouveau As Boolean
Dim d As Word.Document
On Error Resume Next
Set w = GetObject(, "word.application" ) 'Test si il y a un objet Word
If Err.Number = 429 Then 'Word n'est pas lancé
Set w = CreateObject("word.application" ) 'Lance Word
End If
With w
.Documents.Add "C:\Modèles\chantier.dot"
nouveau = True
.ActiveDocument.Active
.ActiveDocument.ShowSpellingErrors = False
remplissage_avec_chantier w
.Visible = False
.ActiveDocument.PrintOut
End With
Word.Application.Quit savechanges:=False
Puis :
Private Sub remplissage_avec_chantier(wsub As Word.Application)
With wsub
If Not IsNull(Me!NomChantier) Then
If ActiveDocument.Bookmarks.Exists("NomChantier" ) = True Then
.Selection.GoTo wdGoToBookmark, Name:="NomChantier"
.Selection.TypeText (Me!NomChantier)
End If
End If
End With
End Sub
Avec cet exemple, je remplis le signet "Nom de Chantier" dans le fichier "chantier.dot".
Tout cela marche très bien. Je clique sur mon bouton "imprimer" dans mon log access, la page sort avec les signet rempli. Si je reclic sur imprimer, une nouvelle pasge sort de l'imrpimante, mais tous les signets sont vides. Je doit relancer access pour obtenir un résultat correct....
Pas pratique !