Je ne trouve pas comment faire ?

 

Comment effectuer une recherche d’une chaîne de caractère multi ligne par ex : rechercher toto + <RC>+ tata

 

J’ai essayé ceci sans succès :

 

Commande UNO

 

Sub RechercherUNO(ByVal sRecherche As String, ByVal sRespecterCasse As Boolean)

        Dim oDispatcherLocal As Object

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

        Dim Arguments(18) As Object

        sRecherche = ConvertToAllowsString(sRecherche)

 

        oSel = oDocument.CurrentController.Frame

        Arguments(0) = MakePropertyValue("SearchItem.StyleFamily", 2)

        Arguments(1) = MakePropertyValue("SearchItem.CellType", 0)

        Arguments(2) = MakePropertyValue("SearchItem.RowDirection", True)

        Arguments(3) = MakePropertyValue("SearchItem.AllTables", False)

        Arguments(4) = MakePropertyValue("SearchItem.Backward", False)

        Arguments(5) = MakePropertyValue("SearchItem.Pattern", False)

        Arguments(6) = MakePropertyValue("SearchItem.Content", False)

        Arguments(7) = MakePropertyValue("SearchItem.AsianOptions", False)

        Arguments(8) = MakePropertyValue("SearchItem.AlgorithmType", 0)

        Arguments(9) = MakePropertyValue("SearchItem.SearchFlags", 65536)

        Arguments(10) = MakePropertyValue("SearchItem.SearchString", sRecherche)

        Arguments(11) = MakePropertyValue("SearchItem.ReplaceString", "")

        Arguments(12) = MakePropertyValue("SearchItem.Locale", 255)

        Arguments(13) = MakePropertyValue("SearchItem.ChangedChars", 2)

        Arguments(14) = MakePropertyValue("SearchItem.DeletedChars", 2)

        Arguments(15) = MakePropertyValue("SearchItem.InsertedChars", 2)

        Arguments(16) = MakePropertyValue("SearchItem.TransliterateFlags", 1024)

        Arguments(17) = MakePropertyValue("SearchItem.Command", 0)

        Arguments(18) = MakePropertyValue("Quiet", True)

 

        oDispatcherLocal.executeDispatch(oSel, ".uno:ExecuteSearch", "", 0, Arguments)

 

 

    End Sub

 

Commande non UNO

 

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

 

        Dim oResultat As Object

        Dim oDispatcherLocal As Object

        Dim oControleur As Object

        sMots = ConvertToAllowsString(sMots)

        oSel = oDocument.CurrentController.Frame

 

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

        oMonTexte = oDocument.getText()

        oControleur = oDocument.CurrentController

 

        oJeCherche = oDocument.createSearchDescriptor

 

        'Definir la balise à rechercher dans le document OpenOffice Word

        oJeCherche.SearchString = sMots

 

        'Distinguer les majuscules des minuscules dans la recherche

        oJeCherche.SearchCaseSensitive = sRespecterCasse

 

        'Ne rechercher que des mots

        oJeCherche.SearchWords = sMotEntier

 

        'Rechercher à reculons

        oJeCherche.SearchBackwards = False

 

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

        oJeCherche.SearchRegularExpression = True

 

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

        oJeCherche.SearchStyles = False

 

        'Rechercher un texte similaire au texte cherché

        oJeCherche.SearchSimilarity = False

 

        oResultat = oDocument.findAll(oJeCherche)

 

        RechercherTous = oResultat.getCount()

 

    End Function

 

Avec la fonction permettant d’obtenir une chaîne formaté sans CR et sans tab

 

    Public Function ConvertToAllowsString(ByVal strString As String) As String

        strString = Replace(strString, Chr(13), "\n")

        strString = Replace(strString, Chr(9), "\t")

        MsgBox(strString)

        ConvertToAllowsString = strString

 

    End Function

 

Merci de votre aide


De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Envoyé : jeudi 9 mars 2006 10:54
À : [email protected]
Objet : RE: [prog] Urgentissime !!! OLE et rechercher Remplacer par autre chose que du texte ...

 

Bonjour,

 

Je ne suis pas expert en Basic (j'utilise principalement le SDK en C++).

Ce que je peux dire c'est que "result" est un objet UNO de type XIndexAccess.

Pour plus de détails, voir la fonction findAll() dans le guide de développement du


De : Cezame Concept [mailto:[EMAIL PROTECTED]
Envoyé : mercredi 8 mars 2006 16:04
À : [email protected]
Objet : RE: [prog] Urgentissime !!! OLE et rechercher Remplacer par autre chose que du texte ...

J''ai un soucis avec cette commande result est un variant ?

 

Merci d'avance !

 


De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Envoyé : mercredi 8 mars 2006 14:26
À : [email protected]
Objet : RE: [prog] Urgentissime !!! OLE et rechercher Remplacer par autre chose que du texte ...

 

Voici un exemple ci-dessous pour effectuer une recherche

sur une chaîne et remplacer toutes les occurences par le

contenu du presse-papier.

C'est écrit en OOBasic et ça marche parfaitement en tant que Macro

(j'ai fait le test avec une image dans le presse-papier)

 

Sub RechercherRemplacer

    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    oDocument = ThisComponent

    oText = oDocument.getText()

    oController = ThisComponent.CurrentController

    oFrame = oController.Frame

 

    search = oDocument.createSearchDescriptor()

 

    ' Définition de la chaîne à remplacer

    search.setSearchString("test")

 

    result = oDocument.findAll(search)

 

    For count=1 To result.getCount()

        ' sélectionner la chaine de recherche

        aCursor = oText.createTextCursorByRange(result.getByIndex(count-1))

 

        ' Remplacement par un texte

        ' aCursor.setString("Chaine de remlpacement")

 

        'Remplacement par le contenu du presse papier

        oController.select(aCursor)

        dispatcher.executeDispatch(oFrame, ".uno:Paste", "", 0, Array())

    Next

 

    msgbox "Nombre de remplacements = " + result.getCount()

 

End Sub

 

J'espère que cela résoudra votre problème.

Cdlt.

 

 -----Message d'origine-----
De : Cezame Concept [mailto:[EMAIL PROTECTED]
Envoyé : mercredi 8 mars 2006 12:15
À : [email protected]
Objet : [prog] Urgentissime !!! OLE et rechercher Remplacer par autre chose que du texte ...

Voila mon problème ...

 

Je souhaite remplacer une chaîne de caractère dans un document oOWriter par le contenu du presse papier ...

 

Lorsque celui-ci contient du texte pas de problèmes ...

 

Si maintenant par exemple je veux utiliser un modèle de document dans lequel je place un mot clé (prenons pour exemple  %TableauCalc% ) par un tableau oOCalc contenant des données variables ...

 

Lors de la confection du modèle le mot clé %TableauCalc% positionnera en fait le tableau oOCalc a insérer ..

 

Je pensais copier le tableau dans le presse papier et ensuite remplacer la chaîne %TableauCalc% par le contenu du presse papier ...

Cette fonction peut être également utilisée par ex pour positionner une image comme un logo ou autre ...

 

Quelqu'un aurait t'il une solution ...

 

Je suis entrain de finaliser un assemblage .NET réalisé sous VB Express 2005 qui contient deux classes l'une pour oOWriter l'autre pour oOCalc ... le but étant de rendre réutilisable au maximum les fonctions dans divers applicatifs sous des environnements de développements différents ... (VB, Windev ...)

 

Merci de votre aide ...

 

 

 

---------------------------------------------------------------------------------------
Wanadoo vous informe que cet e-mail a ete controle par l'anti-virus mail.
Aucun virus connu a ce jour par nos services n'a ete detecte.

 

 

---------------------------------------------------------------------------------------
Wanadoo vous informe que cet e-mail a ete controle par l'anti-virus mail.
Aucun virus connu a ce jour par nos services n'a ete detecte.

 

Répondre à