5 messages in org.openoffice.fr.progRe: [prog] Echec du lancement d'une m...
FromSent OnAttachments
Jean SympaDec 23, 2006 6:19 am 
Bernard MarcellyDec 23, 2006 11:49 am 
Jean SympaDec 24, 2006 7:32 am 
Francois GattoDec 24, 2006 11:43 pm 
Jean SympaDec 26, 2006 2:19 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] Echec du lancement d'une macro dans l'Editeur BasicActions...
From:Jean Sympa (jsy@free.fr)
Date:Dec 26, 2006 2:19:18 am
List:org.openoffice.fr.prog

Merci à vous tous

Ma première macro personnelle fonctionne, grâce à votre aide. La voici:

Option Explicit

Rem ---------------------------------------------------------------------------

Function Remplacer1SChPar1Car(Sch As String, Car As String) As String

Dim monDocument as Object Dim jeCherche As Object, trouv As Variant Dim x As Long monDocument=ThisComponent jeCherche=monDocument.createSearchDescriptor

with jeCherche .SearchString= Sch .SearchWords=false end with

trouv=monDocument.findAll(jeCherche)

print "Nombre d'occurences: " & cstr(trouv.count)

for x=0 to trouv.count-1 trouv(x).CharBackColor=1234567 'Fond vert sombre trouv(x).String= Car Remplacer1SChPar1Car= "Fonction Car" next

End Function Rem -------------------------------------------------------------------- Sub RemplacerNSChParNCar() Dim SChPar1Car As String

Remplacer1SChPar1Car("<B>","") Remplacer1SChPar1Car("</B>","") Remplacer1SChPar1Car("<BR>","") Remplacer1SChPar1Car("=E0","à") Remplacer1SChPar1Car("=E2","â") Remplacer1SChPar1Car("=E7","ç") Remplacer1SChPar1Car("=E8","è") Remplacer1SChPar1Car("=E9","é") Remplacer1SChPar1Car("=EA","ê") Remplacer1SChPar1Car("=EE","î") Remplacer1SChPar1Car("=F4","ô") Remplacer1SChPar1Car("=F9","ù") Remplacer1SChPar1Car("=20","")

End Sub

Cette macro me permet de traiter toutes les sous chaînes d'un fichier texte.

Je retiens:

- Que l'affichage du contenu d'un module ne permet pas de reconnaître les
fonctions, ni les macros. Macros et fonctions sont représentées par leur nom, sans autre indication.

- Que Dans l'exécution d'une macro,avec la méthode pas à pas, on n'explore pas
le contenu des fonctions

- Que le lancement d'une macro sélectionnée dans un module s'exécute, en
l'absence d'une erreur de codage.

Je m'en vais de ce pas croquer un chocolat, je pense l'avoir mérité.

Tous mes voeux à la liste pour l'an que vint Cordialement Papy

Francois Gatto a écrit :

Bonjour,

Je constate que tu es tenace ;)

Je voudrais juste te conseiller

- de lire et relire les fondamentaux des instructions sBasic, - de récrire une macro qui semble ne pas fonctionner en la décomposant en sous éléments ET de vérifier au fur et à mesure que chaque élément (procédure ou fonction) donne bien le résultat escompté. - de pas oublier de garder à l'esprit d'une part ce que l'on souhaîte obtenir, d'autre part les moyens que l'on met en oeuvre pour y aboutir.

Souvent, nez dans le guidon, on ne prête pas/plus assez attention à certains "détails".

Dans ton cas,

avec l'appel de la fonction Remplacer1SchPar1Car("=E8", "é"), que souhaîtes-tu ?

1) rechercher une chaine (ou fragment) => "=E8" 2) remplacer cette chaine par une autre => "é".

Or, dans le corps de la procédure je lis ceci :

with jeCherche .SearchString= "Sch" .SearchWords=false end with

ce qui sous entend qu'avec .SearchString= "Sch", tu forces la fonction à ne rechercher que la chaine "Sch", c'est à dire les caractères _Sch_. Ce n'est bien entendu pas cela que tu désires.

Ton but, en appelant la fonction Remplacer1SchPar1Car(Sch As String, Car As String) est de trouver la chaine passée en premier paramètre Sch As String et de la remplacer par une autre, second paramètre, Car As String.

MAIS tu as confondu le litteral "Sch" avec le contenu de la variable Sch, et de fait ta macro ne répond pas exactement bien qu'elle semble fonctionner correctement.

Il te faut donc modifier .SearchString= "Sch" en .SearchString= Sch, ainsi que trouv(x).String="Car" par trouv(x).String=Car

Voila, je te laisse continuer tes découvertes.