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.

Francois


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à