bonjour à tous:
je suis obligé d'utiliser word 2000, j'essaye de faire une chose apparemment évidente: copier des valeurs de textbox dans un document word contenant des champs.
facile...
he non.
c'est facile de remplacer un signet par une valeur, mais ce remplacement détruit le signet (problème connu de tous sauf de moi).
il y adonc plusieurs routines qui se ressemblent du type:
j'ai rajouté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 ' ******************************* ' *** Utilisation des signets *** ' ******************************* Public Sub RemplirSignet0(S As String, T As String) ' Remplit le signet S avec le texte T sans détruire S 'exemples: RemplirSignet "Titre", T ' RemplirSignet "Question", Q Call GetBmks 'map ok If ActiveDocument.Bookmarks.Exists(Name:=S) Then MsgBox "RemplirSignet0 signet (reconnu):" & S & " texte:" & T, 0 Else MsgBox "RemplirSignet0 signet (NON RECONNU):" & S & " texte:" & T, 0 'ok+++ End If On Error GoTo rien Dim Place As Long Place = ActiveDocument.Bookmarks(S).Range.Start ActiveDocument.Bookmarks(S).Range.Text = T ActiveDocument.Bookmarks.Add Name:=S, Range:=ActiveDocument.Range(Place, Place + Len(T)) rien: End Subqui liste les signets présents sur le document lors de la tentative de remplissage => c'est bon TOUS les signets sont bien reconnus à cet endroit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Call GetBmks
MAIS après il ne se passe rien;
montre systematiquement que le signet que l'on doit remplir est inconnu (c'est normal qu'il ne se passe rien, mais je n'ai pas de message d'erreur).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 If ActiveDocument.Bookmarks.Exists(Name:=S) Then MsgBox "RemplirSignet0 signet (reconnu):" & S & " texte:" & T, 0 Else MsgBox "RemplirSignet0 signet (NON RECONNU):" & S & " texte:" & T, 0 'ok+++ End If
J'ai essayé sans succés cette fonction du forum (merci):
quelqu'un peut il m'expliquer pourquoi ca ne marche pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Function RemplacerTexteSignet(MyBM As Bookmark, stTexte As String) As Boolean 'Déclaration des variables 'intI pour le début de notre Bookmark Dim intI As Long 'stBM pour le nom de notre Bookmark Dim stBM As String 'un objet range pour le range de notre Bookmark Dim MyRng As Range 'Récupération du nom du signet stBM = MyBM.Name 'Récupération de la position de départ de notre signet intI = MyBM.Start 'Affectation du texte à notre Bookmark MyBM.Range.Text = stTexte '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(stTexte)) ' Crée le Bookmark sur l'objet Range ActiveDocument.Bookmarks.Add stBM, MyRng Set MyRng = Nothing 'Affectation de la valeur True à la fonction RemplacerTexteSignet = True End Function
pour ma part j'ai essayé toutes les combinaisons trouvées sur le net...
d'avance merci (attention c'est word 2000 !)
ap
Partager