[Résolu][Base] lister ensemble des macros utilisées
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre lOOyal
- Messages : 34
- Inscription : 27 août 2018 06:54
[Résolu][Base] lister ensemble des macros utilisées
Bonjour à toutes et à tous,
A force de créer des macros à tout va dans ma base, je fini par perdre le fil. Du coup, j'aurais souhaité savoir s'il existe un moyen de lister l'ensemble des macros mais surtout de savoir à quel endroit elles sont utilisées.
Par exemple quelque chose comme : Macro1 de la bibliothèque Biblio1 de la base1 est utilisée avec le champ1 du formulaire2 ainsi qu'avec le champ4 du sous-formulaire10 et çà pour l'ensemble des macros de ma base.
Il y a bien outils>macros>OpenOffice Basic... où je trouve l'ensemble de mes bibliothèques avec les macros mais je ne trouve rien qui me disent à quoi elles sont rattachées.
Une solution miracle ?
Merci d'avance pour votre aide.
A force de créer des macros à tout va dans ma base, je fini par perdre le fil. Du coup, j'aurais souhaité savoir s'il existe un moyen de lister l'ensemble des macros mais surtout de savoir à quel endroit elles sont utilisées.
Par exemple quelque chose comme : Macro1 de la bibliothèque Biblio1 de la base1 est utilisée avec le champ1 du formulaire2 ainsi qu'avec le champ4 du sous-formulaire10 et çà pour l'ensemble des macros de ma base.
Il y a bien outils>macros>OpenOffice Basic... où je trouve l'ensemble de mes bibliothèques avec les macros mais je ne trouve rien qui me disent à quoi elles sont rattachées.
Une solution miracle ?
Merci d'avance pour votre aide.
Dernière modification par CrazyDams le 12 sept. 2018 11:57, modifié 1 fois.
Apache OpenOffice 4.1.5
Windows 8.1 64 bits
Windows 8.1 64 bits
-
- InconditiOOnnel
- Messages : 753
- Inscription : 09 avr. 2013 07:15
- Localisation : T'as pas dit bonjour, merci et à bientot !
Re: [Base] lister ensemble des macros utilisées
Bonjour CrazyDams,
Bonne idée,
Cela démontre que tu es allé loin avec base.
L'outil dont tu parles est effectivement très intéressant,
mais il doit être entièrement codé, il me semble,
pour répondre à ce niveau de service.
Une fois réalisé, à placer certainement dans les "best-of"
Qui en a le courage ??
Bonne idée,
Cela démontre que tu es allé loin avec base.
L'outil dont tu parles est effectivement très intéressant,
mais il doit être entièrement codé, il me semble,
pour répondre à ce niveau de service.
Une fois réalisé, à placer certainement dans les "best-of"
Qui en a le courage ??
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7
#HSQL Database Engine 1.8.0
version=1.8.0
Locale : fr-FR (fr_FR)
Obligation de version
Bonjour, merci et à bientôt !
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7
#HSQL Database Engine 1.8.0
version=1.8.0
Locale : fr-FR (fr_FR)
Obligation de version
Bonjour, merci et à bientôt !
-
- Membre lOOyal
- Messages : 34
- Inscription : 27 août 2018 06:54
Re: [Base] lister ensemble des macros utilisées
Bonjour Martinbrait,
En fait je m'en sentirais bien le courage, le seul souci est que je ne sais pas où trouver certaines informations. Ma seule piste pour le moment est que j'arrive à trouver l'ensemble des modules contenu dans la bibliothèque "Standard" de ma base grâce au code suivant et au plus qu'utile xray :
Ensuite, lorsque je sélectionne mon module avec getbyname et toujours xray, j'obtiens le code contenu dans ce module, sans aucune propriété ni rien. Donc pour le moment, je ne sais pas trouver les macros par programmation.
Ce qu'il me faudrait ensuite, c'est l'endroit où est stockée l'information de l'association d'une macro avec un événement d'un contrôle en particulier dans un formulaire. Par exemple, j'ai associé une macro avec l’événement "modifié" d'une zone de liste. Je me disais que peut-être dans les propriétés de cette zone de liste on pouvait trouver quelque chose avec la méthode getproperty, mais je ne sais pas l'utiliser ni même si je suis sur la bonne voie.
Donc en attendant les lumières de quelqu'un de plus compétent que moi en la matière, je continue à creuser
Je viens de trouver une piste intéressante. J'ai écrit le code suivant dans une macro :
Au départ cela m'a affiché "Donnée vide (empty)" et comme je ne savais pas ce que cela ouvrait j'ai tenté d'assigner une macro à l'événement "Démarrer l'application" du menu "personnalisé"
Là j'ai relancé ma macro et... surprise, j'ai obtenu ce qui s'affiche sur l'image jointe, à savoir un "EventType" et un "Script"
Donc il y a du progrès, mais je ne sais pas quoi faire de çà... en plus cela ne concerne que le document dans sa globalité... il faudrait arriver à faire la même chose pour chaque formulaire et chaque contrôle de formulaire...
En fait je m'en sentirais bien le courage, le seul souci est que je ne sais pas où trouver certaines informations. Ma seule piste pour le moment est que j'arrive à trouver l'ensemble des modules contenu dans la bibliothèque "Standard" de ma base grâce au code suivant et au plus qu'utile xray :
Code : Tout sélectionner
xray basiclibraries.getbyname("Standard").elementnames
Ce qu'il me faudrait ensuite, c'est l'endroit où est stockée l'information de l'association d'une macro avec un événement d'un contrôle en particulier dans un formulaire. Par exemple, j'ai associé une macro avec l’événement "modifié" d'une zone de liste. Je me disais que peut-être dans les propriétés de cette zone de liste on pouvait trouver quelque chose avec la méthode getproperty, mais je ne sais pas l'utiliser ni même si je suis sur la bonne voie.
Donc en attendant les lumières de quelqu'un de plus compétent que moi en la matière, je continue à creuser
Je viens de trouver une piste intéressante. J'ai écrit le code suivant dans une macro :
Code : Tout sélectionner
xray thiscomponent.currentcontroller.model.events.getbyname("OnStartApp")
Là j'ai relancé ma macro et... surprise, j'ai obtenu ce qui s'affiche sur l'image jointe, à savoir un "EventType" et un "Script"
Donc il y a du progrès, mais je ne sais pas quoi faire de çà... en plus cela ne concerne que le document dans sa globalité... il faudrait arriver à faire la même chose pour chaque formulaire et chaque contrôle de formulaire...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Apache OpenOffice 4.1.5
Windows 8.1 64 bits
Windows 8.1 64 bits
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Base] lister ensemble des macros utilisées
Bonsoir
Un petit exemple des plus simples.Pour tester, tu ouvres le formulaire fAdhs et tu appuies sur le bouton Evenements
Pourquoi pas toimartinbrait a écrit :Qui en a le courage ??
Un petit exemple des plus simples.
Code : Tout sélectionner
Sub listerEvents
oDoc = thiscomponent
oForm = oDoc.DrawPage.Forms(0)
txt = "Formulaire : " & oForm.Name & Chr(13)
For i = 0 to oForm.Count -1
txt = txt & "Contrôle : " & oForm.ControlModels(i).Name & Chr(13)
oEvent = oForm.getScriptEvents(i)
For n = 0 To Ubound(oEvent)
txt = txt & "Type listener : " & oEvent(n).ListenerType & " ; Méthode : " & oEvent(n).EventMethod & Chr(13)
Decoupe = Split(oEvent(n).ScriptCode,"?")(0)
suivant = Split(decoupe(1),":")(1)
txt = txt & "Librairie : " & Split(Suivant,".")(0) & " ; Module : " & Split(Suivant,".")(1) & " ; Macro : " & Split(Suivant,".")(2) & chr(13)
Next n
Next i
msgBox txt
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- SuppOOrter
- Messages : 1477
- Inscription : 30 déc. 2007 18:56
- Localisation : Lille
Re: [Base] lister ensemble des macros utilisées
Bonjour,
Ayant eu ce problème il y a quelques années, j'ai fait cette petite extension qui liste tous les scripts contenus dans un fichier ODB. Cette extension fonctionne avec AOo 330 et supérieur.
Il faut que la base soit enregistrée, la liste (ListeDesScripts.txt) sera dans le dossier Temp défini dans les options de AOo (Chemins).
Pour l'exécution, vous ouvrez votre fichier ODB, puis
Outils>Macro>Exécuter la macro>MesMacros>ListesDesScripts>a_Formulaire>>Main
....un message est émis à la fin de l'exécution.
Cdlt.
Ayant eu ce problème il y a quelques années, j'ai fait cette petite extension qui liste tous les scripts contenus dans un fichier ODB. Cette extension fonctionne avec AOo 330 et supérieur.
Il faut que la base soit enregistrée, la liste (ListeDesScripts.txt) sera dans le dossier Temp défini dans les options de AOo (Chemins).
Pour l'exécution, vous ouvrez votre fichier ODB, puis
Outils>Macro>Exécuter la macro>MesMacros>ListesDesScripts>a_Formulaire>>Main
....un message est émis à la fin de l'exécution.
Cdlt.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits : AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Windows 10 64 bits : AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Base] lister ensemble des macros utilisées
Bonjour,
Cordialement.
Impeccable ![b][color=#FF8000]DLE[/color][/b] a écrit :j'ai fait cette petite extension qui liste tous les scripts contenus dans un fichier ODB
La méthode "getScriptProvider" du composant de base (thisComponent en général) renvoie une instance du service com.sun.star.script.provider.MasterScriptProvider, qui, via sa méthode "getChildNodes", permet de parcourir récursivement toutes les macros (tous langages confondus) du document. C'est le même service qui est utilisé en interne pour afficher l'arbre des macros dans le gestionnaire de macros.[b]CrazyDams[/b] a écrit :j'aurais souhaité savoir s'il existe un moyen de lister l'ensemble des macros
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Base] lister ensemble des macros utilisées
Bonjour
A+
[color=#FF8000][b]DLE[/b][/color] a écrit :j'ai fait cette petite extension qui liste tous les scripts contenus dans un fichier ODB
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre lOOyal
- Messages : 34
- Inscription : 27 août 2018 06:54
Re: [Base] lister ensemble des macros utilisées
Merci à vous tous !!!
exactement ce qu'il me fallait
Je savais bien qu'il y avait du script et du event dans l'air
exactement ce qu'il me fallait
Je savais bien qu'il y avait du script et du event dans l'air
Apache OpenOffice 4.1.5
Windows 8.1 64 bits
Windows 8.1 64 bits