15 messages in org.openoffice.fr.progRe: [prog] Pb Recherche Remplace dans...
FromSent OnAttachments
Bruno ABRATANSKINov 13, 2006 2:46 am 
Manuel NAUDINNov 13, 2006 3:03 am 
Bruno ABRATANSKINov 13, 2006 4:24 am 
Marceau GUIHARDNov 13, 2006 6:19 am 
Marceau GUIHARDNov 13, 2006 7:10 am 
Bruno ABRATANSKINov 13, 2006 7:20 am 
Marceau GUIHARDNov 13, 2006 8:21 am 
Bruno ABRATANSKINov 13, 2006 8:50 am 
SteveNov 13, 2006 9:39 am 
Marceau GUIHARDNov 13, 2006 10:20 am 
Bruno ABRATANSKINov 13, 2006 11:38 pm 
Marceau GUIHARDNov 14, 2006 12:19 am 
JMD Jean-Marc DelmasNov 14, 2006 1:29 am 
Bruno ABRATANSKINov 15, 2006 2:03 am 
Bruno ABRATANSKINov 16, 2006 1:01 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Pb Recherche Remplace dans WriterActions...
From:JMD Jean-Marc Delmas (jean@centraliens.net)
Date:Nov 14, 2006 1:29:54 am
List:org.openoffice.fr.prog

Dans n'importe quel document Writer, teste le code suivant :

Sub Main Dim oDoc as object, oText As Object, oWord As Object, oTrouve As Object

oDoc = ThisComponent oWord = oDoc.createSearchDescriptor oWord.SearchString = "Waouah" 'String très improbable oTrouve = oDoc.FindFirst(oWord)

If IsNull(oTrouve) then msgbox "Objet Null" If oTrouve = Null then msgbox "Objet Null" End Sub

La fonction IsNull fait afficher "Objet Null" alors que l'égalité directe ne donne rien. Il n'y a pas équivalence.

Jean-Marc

Marceau GUIHARD a écrit :

Une simple suggestion : Peut-être pourrais-tu t'en tirer en faisant redémarrer le findnext d'un curseur (qui du coup redeviendrait utile) créé un caractère après le dernier mot trouvé AVANT d'insérer l'image à la place du mot. Comment insère-tu l'image à la place du mot ? Cordialement

Marceau

Bruno ABRATANSKI a écrit :

Voilà le code que j'utilise, à noter que je ne développe pas en basic mais dans un langage de gestion appelé WinDev. Le code est assez proche. Quand la ligne commence par // c'est pour les commentaires (REM)

lPosTrouve est un objet OLE dynamique

//Créer un objet JeCherche qui contiendra tous les paramètres nécessaires à ce remplacement :oJeCherche=:oDocument>>createSearchDescriptor()

//Definir la balise à rechercher dans le document OpenOffice Word :oJeCherche>>SearchString=pMotARechercher

//Ne rechercher que des mots :oJeCherche>>SearchWords=Vrai

lPosTrouve = :oDocument>>findFirst(:oJeCherche)

boucle si lPosTrouve = Null alors sortir lPosTrouve>>String="" lPosTrouve = :oDocument>>findNext(lPosTrouve>>End, :oJeCherche) FIN

En fait Je recherche des mots et je les remplace par des valeurs en utilisant ReplaceAll sauf que là je veux mettre une image à la place du mot. Donc le chercher me donne la position, j'efface le mot trouvé et j'insere l'image. Cela marche bien pour UN seul mot si je ne fais pas le FindNext mais si l'utilisateur a placé le mot plusieurs fois je suis coincé sans la boucle.

En tout cas merci pour les réponses déjà apporté.

-----Message d'origine----- De : Marceau GUIHARD [mailto:marc@wanadoo.fr] Envoyé : lundi 13 novembre 2006 16:11 À : pr@fr.openoffice.org Objet : Re: [prog] Pb Recherche Remplace dans Writer

Re : Petit complément pour le test : if isNull(Postrouve) marchera si tu veux un booléen

Cordialement

Marceau

Bruno ABRATANSKI a écrit :

Mettre un false à la place de Null ?

Ça empeche pas l'erreur lors du findnext non ?

-----Message d'origine----- De : Manuel NAUDIN [mailto:audi@gmail.com] Envoyé : lundi 13 novembre 2006 12:04 À : pr@fr.openoffice.org Objet : Re: [prog] Pb Recherche Remplace dans Writer

Le 13/11/06, Bruno ABRATANSKI <brun@laposte.net> a écrit :

Bonjour,

Bonjour,

Pb lors d'un recherche remplace je fais :

postrouve = mondocument.findfirst(jecherche) boucle si postrouve = null sortir curseur = mondocument.text.cretaetextcursorbyrange(postrouve) curseur.string = "£"

postrouve = mondocument.findnext(postrouve,jecherche) fin

Lors du findnext j'ai une erreur comme quoi le type de la variable postrouve est incompatible alors que le findfirst a bien fonctionné ??

moi j'aurais fait : <code> postrouve = mondocument.findfirst(jecherche) boucle si postrouve = false sortir curseur = mondocument.text.cretaetextcursorbyrange(postrouve) curseur.string = "£"

postrouve = mondocument.findnext(postrouve, ,jecherche) fin </code>

*Bruno ABRATANSKI**