OVH Cloud OVH Cloud

Formulaire et access

1 réponse
Avatar
gerard v
Bonsoir
je rempli un formulaire word directement depuis access avec les commandes
'ouverture de l'objet word
Set objWord = CreateObject("Word.Application")
objWord.Documents.Open Chem
dans lequel j'ai des champs ( signet : Nom; Signet : Prenom....)
je remplis ces champs automatiquement
'initialisation des signets
objWord.Selection.GoTo wdGoToBookmark, , , "Nom"
' mettre la valeur dans le signet
objWord.Selection.TypeText TxtNom.Value
je voudrai savoir comment faire pour ne pas perdre mes signets
car avec cette methode le signet n'est pas rempli mais bien remplace par la
valeur.
Merci pour votre aide
gerard

1 réponse

Avatar
Guy Moncomble
Bonjour à tous,
dans le message <bodvrn$439$,

| Bonsoir
| je rempli un formulaire word directement depuis access avec les
| commandes 'ouverture de l'objet word
| Set objWord = CreateObject("Word.Application")
| objWord.Documents.Open Chem
| dans lequel j'ai des champs ( signet : Nom; Signet : Prenom....)
| je remplis ces champs automatiquement
| 'initialisation des signets
| objWord.Selection.GoTo wdGoToBookmark, , , "Nom"
| ' mettre la valeur dans le signet
| objWord.Selection.TypeText TxtNom.Value
| je voudrai savoir comment faire pour ne pas perdre mes signets
| car avec cette methode le signet n'est pas rempli mais bien remplace
| par la valeur.
| Merci pour votre aide
| gerard
La solution est simple dans son principe :
- mémoriser le début du signet à modifier,
- modifier le signet
- sélectionner une zone correspondant au nouveau texte.
J'ai écrit une macro qui fait cela dans toutes les configurations. Une
copie que tu peux sans doute adapter se trouve en fin de message, mais
si le document n'est pas trop complexe tu peux essayer ceci :
- faire un MOVELEFT du nombre de caractères inséré, en sélectionnant
- redéfinir le signet
soit quelque chose du genre, à adapter pour l'utiliser à partir d'Access
:

Public Sub toto()
Dim textesignet
Selection.GoTo what:=wdGoToBookmark, Name:="toto"
textesignet = "lulu"
Selection.TypeText textesignet
Selection.MoveLeft unit:=wdCharacter, Count:=Len(textesignet),
Extend:=wdExtend
ActiveDocument.Bookmarks.Add Name:="toto", Range:=Selection.Range
End Sub
--
A+

GMO MVP WORD

===== Public Sub MajSignet(NomSignet As String, TexteSignet As String)
'Guy Moncomble - Août 2003 ©
'Modifie le texte d'un signet et rétablit ce signet (supprimé par la
mise à jour).

'Fonctionne dans :
' - document principal, y compris les tableaux,
' - en-têtes et pieds de page,
' - cadres et zones de texte,
' - notes de bas de page et notes de fin.

Dim MyRange As Range, Debut As Long, TypAff As WdViewType, FenAff As
WdSeekView

'Si le signet existe
If ActiveDocument.Bookmarks.Exists(NomSignet) Then
'Où sommes nous au moment de l'appel ? quel est le type d'affichage
?
FenAff = ActiveDocument.ActiveWindow.View.SeekView
TypAff = ActiveDocument.ActiveWindow.View.Type
'Sélection du signet
ActiveDocument.Bookmarks(NomSignet).Select
'Où sommes-nous maintenant ?
If Selection.Information(wdInHeaderFooter) Then
'Il faut revenir en mode page, en-tête ou pied de page ouvert,
sinon marche pas
ActiveWindow.View.Type = wdPrintView
'On resélectionne
ActiveDocument.Bookmarks(NomSignet).Select
End If
Set MyRange = Selection.Range
Debut = MyRange.Start
Selection.Bookmarks(NomSignet).Range.Text = TexteSignet
MyRange.SetRange Debut, Debut + Len(TexteSignet)
Selection.Bookmarks.Add NomSignet, MyRange
'On rétablit la vue initiale
ActiveWindow.ActivePane.View.SeekView = FenAff
ActiveWindow.View.Type = TypAff
End If
End Sub
======