OVH Cloud OVH Cloud

word 2000 - bookmark not found????

1 réponse
Avatar
Alain Bourgeois
Chers tous,


j'utilise word 2000 fr, toutes les mises à jour officeupdate sont
installées.

J'ai une macro qui insère du texte là où se trouve un signet.

Malheureusement, il semble impossible de se positionner sur un signet
d'une zone de texte
(ce signet n'apparait pas dans la liste des signets si le curseur est
situé hors de la zone de texte)


Donc le code:

If odoc.Bookmarks.Exists(signet) Then
Set rrange = odoc.GoTo(wdGoToBookmark, , , signet)
...
End If

provoque une erreur sur Set rrange = odoc.GoTo(wdGoToBookmark, , ,
signet) alors que le signet existe.

Existe-t'il une fonction me permettant de me positionner sur un tel
signet?


Bien à vous,
Alain Bourgeois
bk332951@skynet.be
www.self-mail.com


PS si vous pouviez mettre mon e-mail en bcc de votre réponse , ce serait
sympa.

1 réponse

Avatar
Jean-Guy Marcil
Alain Bourgeois was telling us:
Alain Bourgeois nous racontait que :

Chers tous,


j'utilise word 2000 fr, toutes les mises à jour officeupdate sont
installées.

J'ai une macro qui insère du texte là où se trouve un signet.

Malheureusement, il semble impossible de se positionner sur un signet
d'une zone de texte
(ce signet n'apparait pas dans la liste des signets si le curseur est
situé hors de la zone de texte)


Donc le code:

If odoc.Bookmarks.Exists(signet) Then
Set rrange = odoc.GoTo(wdGoToBookmark, , , signet)
...
End If

provoque une erreur sur Set rrange = odoc.GoTo(wdGoToBookmark, , ,
signet) alors que le signet existe.

Existe-t'il une fonction me permettant de me positionner sur un tel
signet?


On ne peut pas utiliser GoTo pour aller dans une zone de texte.
Par contre, on peut utiliser l'objet Range sans problème:

If oDoc.Bookmarks.Exists(signet) Then
Set rrange = oDoc.Bookmarks(signet).Range
End If

S'il faut absolument utiliser GoTo, alors il faut quelque chose du genre:

'_______________________________________
Sub test()
Dim oDoc As Document
Dim signet As String
Dim myShape As Shape
Dim rrange As Range
Dim shapeRange As Range

Set oDoc = ActiveDocument
signet = "MyTest"

For Each myShape In oDoc.Shapes
If myShape.TextFrame.HasText Then
Set shapeRange = myShape.TextFrame.TextRange
With shapeRange
If .Bookmarks.Exists(signet) Then
Set rrange = .GoTo(wdGoToBookmark, , , signet)
Exit For
End If
End With
End If
Next

End Sub
'_______________________________________

Mais, si nécessaire, il faudra aussi tenir comte des InlineShapes qui ne
font pas partie de la collection Shapes

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org