Bonjour Bernard
J'ai posé une nouvelle question car je pensais être confronté à un nouveau
problème.
A ) - J'ai tenu compte de tes conseils (Je possède la version 2.0)
Je procède de la manière suivante:
a - j'ouvre le fichier à corriger;
b - Je vais dans Outils/Macros/Gérer les macros/OpenOffice.org
Dans le paneau Macros OpenOffice.org je sélectionne un module et la macro qui
m'intéresse.
c - Je clique sur Editer
d - Dans l'éditeur basic(Mes macroos et boîtes de dialogue.Standard-OpenOffice.org)je clique sur la roue dentée,
cela ouvre un paneau que j'appelerrai Paneau de la roue dentée. Je sélectionne la macro qui m'intéresse.
Je clique sur Exécuter: le panneau de la roue dentée disparaît.
Je constate que l'exécution n'a pas lieu et que le curseur se place en regard de la première instruction affichée
dans l'éditeur.
Autrement-dit, je ne parviens pas à lancer la macro sélectionnée dans le
panneau de la roue dentée!
B ) - J'ai créé un nouveau module, dans lequel j'ai placé, uniquement, le code de l'application.
Voici ce code:
REM ***** BASIC *****
Option Explicit
Rem --- Macro mise en question
Sub RemplacerNSchParNCar()
Remplacer1SchPar1Car("=E8", "é")
End Sub
Rem ---------------------------------------------------------------------------
Function Remplacer1SchPar1Car(Sch As String, Car 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= "Résultat Correct"
' ne s'affiche jamais!!
next
End Function
a ) Dans le paneau de la roue dentée je sélectionne RemplacerNSchParNCar
b ) je clique sur Exécuter
la macro ne s'exécute pas.
La fenêtre de la roue dentée se ferme,
je suis revenu à l'éditeur basic.
c ) J'exécute, pas à pas, la macro RemplacerNSchParNCar située au début de
l'éditeur.
Je constate que le curseur se place successivement devant chaque intruction de la macro.
Il marque une pause en disparaissant à End Sub puis, revient à la première instruction.
L'exécution boucle sur la macro.
La fonction Remplacer1SchPar1Car n'est jamais appelée
j'en conclue qu'il a une erreur dans mon code.
C ) - Modifications apportées au code
Je modifie en tâtonant la macro qui devient finalement
Sub RemplacerNSChParNCar()
Dim SChPar1Car As String
SChPar1Car = "Début"
Remplacer1SChPar1Car("=E9","é")
' affiche une fenêtre: Nombre d'occurences = 0
SChPar1Car = Remplacer1SChPar1Car
' affiche une fenêtre: Nombre d'occurences = 0
Print SChPar1Car
' affiche une fenêtre avec uniquement OK et Annuler: Nombre d'occurences = 0
End Sub
Je constate que
le pas à pas boucle sur la macro;
un message apparaît trois fois et,
la fonction n'est pas appelée.
Curieusement, une fois la fonction a été appelée. Dans le texte qui n'était pas celui à corriger mais celui-ci, c'est à dire cette réponse, les sous chaînes [Sch] ont été remplacées par la sous chaîne [Car] et non pas par [é]. Mais, je n'ai pas réussi à appeler une seconde fois la fonction.
Conclusion Ma macro ne lance pas la fonction.
Je sollicite ton aide et celle de la liste quand j'arrive à une impasse.
Je te remercie ainsi que tous ceux qui répondent à mes questions.
Bon Noël à tous
Cordialement
Papy
Bernard Marcelly a écrit :
Bonsoir Jean Sympa
Message du 2006-12-23 15:20:
Bonjour à toutes et à tous,
Echec du lancement d'une macro dans l'Editeur Basic
tu pouvais continuer le fil de messages en cours, puisque le problème
n'est pas encore résolu. Il suffit de faire "Répondre" dans Thunderbird.
Bernard vient de m'expliquer comment lancer une macro qui n'est pas
éditée la première dans un module. Dans l'éditeur Basic, actuellement
j'ai dans l'ordre les codes d'une macro, d'une fonction et d'une macro:
Sub RemplacerSChParCar()
Function Remplacer1SChPar1Car(Sch As String, Car As String)
Sub RemplacerNSChParNCar()
Question 1
La fenêtre du module affiche:
RemplacerSChParCar()
Remplacer1SChPar1Car(Sch As String, Car As String)
RemplacerNSChParNCar()
Non, je ne vois pas ce que tu décris.
Quand tu cliques la roue dentée cela affiche le panneau de la figure
3-6 du livre, page 37. Il comporte:
- à gauche une petite fenêtre avec une arborescence; il devrait
afficher en sélection le nom de ton module, sinon il faut le chercher
dans l'arborescence (cliquer les signes + )
- à droite une petite fenêtre avec les noms des Sub et Function de ce
module. Et seulement les noms ! pas les arguments !
Cliquer une fois sur le nom qui t'intéresse afin de le sélectionner,
puis cliquer sur le bouton "Exécuter" sur la droite du même panneau.
La macro s'exécute immédiatement.
Où rien n'indique que la deuxième ligne représente une fonction.
Est-ce normal?
Oui. Une fonction peut être appelée comme une Sub, sans utiliser le
résultat en retour.
Ai-je commis une erreur?
Certainement. Mais je ne sais pas ce que tu as fait exactement.
Tu peux vérifier que ta macro est appelée en insérant à son début une
instruction d'affichage du genre:
print "je suis passé ici"
Bernard
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]