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
À : prog@fr.openoffice.org
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]

Répondre à