VBA WORD ne pas supprimer les signets

Résolu/Fermé
Bibi - 24 juin 2016 à 22:45
 Bibi - 26 juin 2016 à 20:11
Bonjour bonjour!

Voilà j'ai un problème et je ne trouve pas la solution...
J'ai un modèle word avec un signet. Je lance une macro, avec un UserForm1 et dans ce UserForm1, il y a un TextBox1. J'aimerais que le texte que j'écris dans la TextBox vienne remplacer le texte (et seulement le texte) du signet

Mon code pour l'instant :

Private Sub CommandButton1_Click()
ActiveDocument.Bookmarks("signet").Range.Text = TextBox1.Value
Unload Me
End Sub

Alors le text qui se trouve dans le signet est bien remplacé, mais le signet est supprimé? Est-ce possible de conserver le signet (si par exemple je veux remodifier)?

j'éspère que je n'ai pas été trop confus, et merci d'avance pour le temps que vous m'accorderez
A voir également:

1 réponse

m@rina Messages postés 21109 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 2 décembre 2024 11 364
25 juin 2016 à 02:42
Bonjour,

C'est effectivement un problème.
Le mieux est de faire une fonction qui va permettre de remplacer le signet sans le détruire :

Public Function RemplirSignet(A As String, B As String)
' Remplit le signet A avec le texte B sans détruire A
On Error GoTo sortie
Dim Place As Long
Place = ActiveDocument.Bookmarks(A).Range.Start
ActiveDocument.Bookmarks(A).Range.Text = B
ActiveDocument.Bookmarks.Add Name:=A, Range:=ActiveDocument.Range(Place, Place + Len(B))
sortie:
End Function


Et ta macro :
Private Sub CommandButton1_Click() 
Dim B As String 'ton signet
B=TextBox1.Value
RemplirSignet "signet", B
Unload Me
End Sub


et bien sûr, tu peux utiliser cette fonction avec n'importe quelle valeur récupérée de ton Userform, il suffira de changer simplement dans ta macro le nom du signet.

m@rina



1
Mille merci M@rina! ça fonctionne à la perfection!
0