[Résolu][Python] Appel d'une macro intégrée dans un classeur

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: 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 !
lmdlg
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 10 févr. 2016 15:44

[Résolu][Python] Appel d'une macro intégrée dans un classeur

Message par lmdlg »

Bonjour,

Maintenant que j'ai réussi à intégrer mes macros dans mon classeur Calc, j'essaie d'appeler la macro grâce à un bouton intégré sur une feuille de mon classeur. Je précise qu'elle marche parfaitement en l'appelant via Outils/Macros/Exécuter la macro. Mais quand j'ai associé à ce bouton, la macro, il me précise :
com.sun.star.uno.RuntimeExceptionError during invoking function Principale in module vnd.sun.star.tdoc:/1/Scripts/python/myscript.py (<class 'TypeError'>: Principale() takes 0 positional arguments but 1 was given
Je pense que le fait de cliquer sur le bouton donne un argument dont la procédure ne sait que faire... Mais comment passer outre ?

À bientôt !
Dernière modification par lmdlg le 07 avr. 2016 11:27, modifié 1 fois.
LibreOffice 4.1.3.2 sous Windows 7 / "obligation de version"
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Python] Appel d'une macro intégrée dans un classeur Cal

Message par Dude »

Salut,

Tu dois créer une macro Basic qui appelle ton script Python.
Il faut se servir de la méthode getScriptProvider depuis ton document.
L'objet retourné pourra appeler à son tour le script et lui donner la main.
Des explications en anglais sur le Wiki.
Ta contribution est la bienvenue pour traduire ces pages en français : voir Enrichissez la documentation.

NB : on rappelle que le terme "macro" est parfaitement inutile dans un titre. Toutes les questions ici, traitent de macro.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Python] Appel d'une macro intégrée dans un classeur Cal

Message par bm92 »

Bonjour,
lmdlg a écrit :
com.sun.star.uno.RuntimeExceptionError during invoking function Principale in module vnd.sun.star.tdoc:/1/Scripts/python/myscript.py (<class 'TypeError'>: Principale() takes 0 positional arguments but 1 was given
Je pense que le fait de cliquer sur le bouton donne un argument dont la procédure ne sait que faire... Mais comment passer outre ?
Astuce classique de Python:

Code : Tout sélectionner

def monBeauScript(*bidon):
Ainsi le script accepte un nombre quelconque d'arguments, y compris 0.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
lmdlg
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 10 févr. 2016 15:44

Re: [Python] Appel d'une macro intégrée dans un classeur Cal

Message par lmdlg »

J'ai testé la solution de bm95 et ça marche impecc'.

Merci ! :)
LibreOffice 4.1.3.2 sous Windows 7 / "obligation de version"