Merci à laurent Godard et François Gatto pour leur aide voici donc une
fonction qui permet d'atteindre un signet, puis de modifier le curseur et de
créer un nouveau signet à l'emplacement du curseur tout ceci se passant dans
un cadre.
' procédure Sub_Creer_Signet_Texte
' ================================
' description :
' Créer un signet texte à l'intérieur d'un cadre
' Le signet sera utlisé par la suite pour modifier le texte qui le
suit
'paramètres :
' le nom du signet
' le nombre de caractères qu'il doit sélectionner
Sub Sub_Creer_Signet_Texte(strNomSignet As String, intNBCaract As integer)
Dim Bookmark As Object
Dim Cursor As Object
Dim NomBookmark as String
Dim Doc as object
Dim unSignet as object
Dim monCadre
On Error GoTo Erreurs
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Doc = ThisComponent
unSignet = Doc.Bookmarks.getByName(strNomSignet)
monCadre=unSignet.anchor.getText
Cursor=monCadre.createTextCursorByrange(unSignet.Anchor.start)
Cursor.goRight(intNBCaract, true)
Bookmark = Doc.createInstance("com.sun.star.text.Bookmark")
NomBookmark = PREFIXE_SIGNETS_TEXTE
NomBookmark = NomBookmark & "10_"
NomBookmark = NomBookmark & strNomSignet
Bookmark.Name = NomBookmark
monCadre.insertTextContent(Cursor, Bookmark, True)
Exit Sub
Erreurs:
erreur_num=err()
erreur_txt=error(erreur_num)
erreur_ligne = Erl()
MsgBox("erreur n° " + erreur_num + " à la ligne " + erreur_ligne +
chr(13) + erreur_txt, 1 + 16, "Sub_Creer_Signet_Texte")
End Sub
-----Message d'origine-----
De : Francois Gatto [mailto:[EMAIL PROTECTED]
Envoyé : lundi 12 juin 2006 23:05
À : [email protected]
Objet : Re: [prog] Curseur et création de repère de texte
Bonjour Laurence,
BOTTIN Laurence - DGMT/SG/AG2 a écrit :
> Re
>
> En fait si je fais un creatcursor il n'y a pas de plantage, le byrange
fait
> planté. Je n'avais pas précisé que le signet est dans un cadre
>
Cachotière ;)
> Merci
> Laurence
Le code que j'avais proposé initialement ne tenait pas compte en effet
de ces éléments (cadre, tableau)
J'ai donc modifié en conséquence ma procédure qui devrait te permettre
de placer un repère de texte :
- dans le texte
- dans un cadre
- dans un tableau.
Option Explicit
Sub InsertEverywhereBookmarkToViewCursor
Dim oDoc As Object, oCurCtrl As Object
Dim oCursor As Object, oViewCursor As Object
Dim oVCT As Object
Dim oBookmark As Object, oBookmarks As Object
Dim sMsg As String
oDoc = ThisComponent
oCurCtrl = oDoc.CurrentController
oBookmark = oDoc.createInstance( "com.sun.star.text.Bookmark" )
oBookmark.Name = "MonBookmark7"
'test si le bookmark a placer existe deja
oBookmarks = oDoc.getBookmarks()
If Not oBookmarks.hasByName( oBookmark.Name ) Then
oViewCursor = oCurCtrl.getViewCursor()
oVCT = oViewCursor.Text
oCursor = oVCT.createTextCursorByRange( oViewCursor )
oCursor.String = "*repère ici*"
oVCT.insertTextContent( oCursor, oBookmark, True )
Else
sMsg = "Le bookmark " & oBookmark.Name & " existe déjà"
MsgBox ( sMsg, 32, "Repère de texte" )
End If
End Sub
Espérant que cela convienne.
--
Francois Gatto
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]