VBA WORD ne pas supprimer les signets

Résolu
Bibi -  
 Bibi -
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

1 réponse

  1. m@rina Messages postés 27617 Date d'inscription   Statut Modérateur Dernière intervention   11 563
     
    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
    1. Bibi
       
      Mille merci M@rina! ça fonctionne à la perfection!
      0