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
| Public Function X_Ecr_Champ_Signet(Nom$, Valeur$)
On Error GoTo Fin_X_Ecr_Champ_Signet
Dim Code$, myRange
Dim aField As Field
' Pour éliminer le caractère " qui n'est pas interprèté dans les renvois de champs
If Valeur$ <> "" Then Valeur$ = Join(Split(Valeur$, Chr$(34)), "'")
' Remplace les sauts de ligne par des sauts de §
If InStr(Valeur$, Chr(13)) <> 0 Then Valeur$ = Join(Split(Valeur$, Chr(13)), Chr(11))
If InStr(Valeur$, Chr(10)) <> 0 Then Valeur$ = Join(Split(Valeur$, Chr(10)), "")
' Remplace le caractère ^ de saisie de tab par une vraie tabulation
If InStr(Valeur$, Chr(94)) <> 0 Then Valeur$ = Join(Split(Valeur$, Chr(94)), Chr(9))
'Déclaration des variables
'intI pour le début de notre Bookmark
Dim intI As Long
'un objet range pour le range de notre Bookmark
Dim MyRng As Range
'Récupération de la position de départ de notre signet
intI = ActiveDocument.Bookmarks("Nom$").Start
'Affectation du texte à notre Bookmark
ActiveDocument.Bookmarks("Nom$").Range.Text = Valeur$
'Affectation de l'objet Range, où la position de départ est
' la même que pour le Bookmark et la fin sera le début augmenté
' de la longueur du texte
Set MyRng = ActiveDocument.Range(Start:=intI, End:=intI + Len(Valeur$))
' Crée le Bookmark sur l'objet Range
ActiveDocument.Bookmarks.Add Nom$, MyRng
Set MyRng = Nothing
Fin_X_Ecr_Champ_Signet:
If Err.Number <> 0 Then
MsgBox "Le champ " + Nom$ + " est inexistant !", vbInformation, MsgBoxTitre
X_Fin_Erreur Module$, "X_Ecr_Champ_Signet", 0
End If
End Function |
Partager