

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
5 messages in org.openoffice.fr.progRe: [prog] Echec du lancement d'une m...| From | Sent On | Attachments |
|---|---|---|
| Jean Sympa | Dec 23, 2006 6:19 am | |
| Bernard Marcelly | Dec 23, 2006 11:49 am | |
| Jean Sympa | Dec 24, 2006 7:32 am | |
| Francois Gatto | Dec 24, 2006 11:43 pm | |
| Jean Sympa | Dec 26, 2006 2:19 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread 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 Basic | Actions... |
|---|---|---|
| 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







