Title: Rechercher ... et remplacer par coller

Bonjour,

Je galère depuis quelques jours sur cette fonction et malgré toutes mes recherches je ne trouve pas de soltuion.

J'ai créé un document oWriter avec un entête contenant le mot "essai"

Dans le corps le mot "essai"

Ensuite j'ai créé un tableau contenant le mot "essai"

Cette fonction devrait permettre de remplacer "essai" partout dans le document oWriter entête et tableaux compris

J'ai utilisé la fonction suivante:

    Function RechercherRemplacerToutPressePapier(ByVal sMots As String, ByVal sRespecterCasse As Boolean, ByVal sMotEntier As Boolean) As Long

        Dim oResultat As Object

        Dim oDispatcherLocal As Object

        Dim oIndex As Integer

        Dim oControleur As Object

        Dim Arguments(0) As Object

        Arguments(0) = MakePropertyValue("Hidden", False)

        sMots = ConvertToAllowsString(sMots)

        oSel = oDocument.CurrentController.frame

        oDispatcherLocal =

CreateUnoService("com.sun.star.frame.DispatchHelper")

        oMonTexte = oDocument.getText()

        oControleur = oDocument.CurrentController

        oJeCherche = oDocument.createSearchDescriptor

        With oJeCherche

            'Definir la balise à rechercher dans le document OpenOffice Word

            .SearchString = sMots

            'Distinguer les majuscules des minuscules dans la recherche

            .SearchCaseSensitive = sRespecterCasse

            'Ne rechercher que des mots

            .SearchWords = sMotEntier

            'Rechercher à reculons

            .SearchBackwards = False

            'Faire une recherche avec la méthode des expressions régulières

            .SearchRegularExpression = True

            'Rechercher des paragraphes d’un style donné par SearchString

            .SearchStyles = False

            'Rechercher un texte similaire au texte cherché

            .SearchSimilarity = False

        End With

        oResultat = oDocument.findAll(oJeCherche)

        For oIndex = 1 To oResultat.getCount()

            ' sélectionner la chaine de recherche

            oMonCurseur =

oMonTexte.createTextCursorByRange(oResultat.getByIndex(oIndex - 1))

            oControleur.select(oMonCurseur)

            ' Remplacement par un texte

            ' oMonCurseur.setString("Chaine de remplacement")

            'Remplacement par le contenu du presse papier

            oDispatcherLocal.executeDispatch(oSel, ".uno:Paste", "", 0,

Arguments)

        Next

        RechercherRemplacerToutPressePapier = oResultat.getCount()

    End Function


Avec cette fonction j'ai un plantage a chaque changement de type(entête corps ou tableau)

Si j'ai le mot dans l'entête ca plante au premier trouvé dans le corps

Si je supprime le mot recherché dans l'entête ca plante quand je passe a celui contenu dans le tableau ...

Merci de votre aide pour corriger cette fonction ...

PS : je peux transmettre le fichier exemple contenant les données a remplacer pour mieux comprendre le problème


Répondre à