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 24, 2006 7:32:53 am
List:org.openoffice.fr.prog

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