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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
jmarcilREMOVE@CAPSsympatico.caTHISTOO
Word MVP site: http://www.word.mvps.org
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