[Résolu][Calc]Lancement selon mode de veille de l’ordinateur

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 !
gringo74
Membre OOrganisé
Membre OOrganisé
Messages : 96
Inscription : 21 août 2011 11:27

[Résolu][Calc]Lancement selon mode de veille de l’ordinateur

Message par gringo74 »

Bonjour,

Suite à une longue recherche sur votre forum, je cherche a lancer une macro "lors d'une inactivité" prolongée (notamment un mot de passe).
Sur votre forum, des solutions sont proposées comme notamment celle-ci:
Compte_à_rebours (1).ods
Une fois incorporé à mon fichier et du fait que la macro tourne en permanence et que (je pense), fait appel à "wait" , celle-ci affecte les autres macros de mon fichier (comme les barres de progressions, les macros d'impressions automatique....) qui pour le coup, ne fonctionne plus correctement.
Note: une fois la macro enlevé, le tout refonctionne.



Serait-il possible de lancer la macro lorsque l'ordinateur sort/rentre en veille ou peut-être ne plus faire appel à "wait" mais autre chose. Je suis ouvert a toute autre solutions.

Mes compétences étant limité, Je sollicite votre aide, pour savoir si vous auriez une solution alternative pour que le tout fonctionne.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par gringo74 le 06 oct. 2017 10:15, modifié 2 fois.
libreoffice 7.6.5 et windows 10
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Calc] macro après inactivité erreurs

Message par Jurassic Pork »

hello,
en utilisant des macros en python, il y a possibilité de faire du "vrai" multitâche. Cela ne bloque pas non plus l'IHM.
Voici un gif animé montrant l'exécution de deux macros en python lancées dans des "threads" différents.
Une macro incrémente un compteur dans la cellule A1 toutes les secondes et met à jour une barre de progression. L'autre macro décrémente un compteur dans la cellule B1.
Je peux utiliser le tableur pendant l'exécution des deux macros.
Mutitâches-python-LibreOffice.gif
(Cliquer sur l'image pour voir l'animation)


Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
gringo74
Membre OOrganisé
Membre OOrganisé
Messages : 96
Inscription : 21 août 2011 11:27

Re: [Calc] macro après inactivité erreurs

Message par gringo74 »

Bonjour,

Je n'ai aucune connaissance en python ?!
libreoffice 7.6.5 et windows 10
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Calc]Lancement selon mode de veille de l’ordinateur

Message par Jurassic Pork »

hello,
je suis en train de développer une macro en python qui pourra être appelée par une macro en Basic et qui lancera un timer. Au bout d'un temps fourni en paramètre, une macro en basic dont le nom est fournie aussi en paramètre sera lancée. A tout moment, on pourra relancer le timer de 0 par une autre macro.
Pour illustrer ceci, voici à quoi cela pourra ressembler sur un exemple. Pour bien voir ce qui ce passe du côté du code python, j'ai rajouté un compteur qui s'incrémente toutes les secondes et qui s'affiche dans la cellule A1.
Voici le code en BASIC :

Code : Tout sélectionner

CONST JPExecTimeOut = "vnd.sun.star.script:JPTimeOut.py$JPExecTimeOut?language=Python&location=share"

Sub TimeOut()
print "TimeOut"
End Sub

Sub ExecTimeOut()
Dim scriptPro As Object, myScript As Object
Dim Params(1)
Params(0)=15
Params(1)="TimeOut"
scriptPro = ThisComponent.getScriptProvider()
oScript = scriptPro.getScript(JPExecTimeOut)
oScript.invoke(Params, Array(), Array() )
End Sub
Le bouton GO est relié à la procédure ExecTImeOUT .
Le bouton RESET attaque directement une macro en python.
L'événement de feuille Contenu modifié est relié à la même macro que le bouton RESET.
Tout ceci n'est pour l'instant qu'expérimental mais si cela intéresse des personnes (et si cela n'a pas déjà été developpé :aie: ) je fournirai le fichier des macros en python.
Voici ce que cela donne :
JpTimeOut-LibreOffice.gif
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
gringo74
Membre OOrganisé
Membre OOrganisé
Messages : 96
Inscription : 21 août 2011 11:27

Re: [Calc]Lancement selon mode de veille de l’ordinateur

Message par gringo74 »

Bonjour,

Lorsque que je lance la macro, j'obtient un message d'erreur. Faut-il aussi un code en python pour que cela fonctionne ou le code fournit ci-dessous est opérationnelle ?

Code : Tout sélectionner

CONST JPExecTimeOut = "vnd.sun.star.script:JPTimeOut.py$JPExecTimeOut?language=Python&location=share"

Sub TimeOut()
print "TimeOut"
End Sub

Sub ExecTimeOut()
Dim scriptPro As Object, myScript As Object
Dim Params(1)
Params(0)=15
Params(1)="TimeOut"
scriptPro = ThisComponent.getScriptProvider()
oScript = scriptPro.getScript(JPExecTimeOut)
oScript.invoke(Params, Array(), Array() )
End Sub
libreoffice 7.6.5 et windows 10
gringo74
Membre OOrganisé
Membre OOrganisé
Messages : 96
Inscription : 21 août 2011 11:27

Re: [Calc]Lancement selon mode de veille de l’ordinateur

Message par gringo74 »

Bonjour,


Lorsque que je lance la macro, j'obtient un message d'erreur. Faut-il un code en python pour que cela fonctionne ?

De mon coté, c'est bien la fonction wait qui impact la macro. J'ai pu le confirmer .

Il y aurais t'il un moyen de contourner le problème sans utiliser python ?
libreoffice 7.6.5 et windows 10
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Calc]Lancement selon mode de veille de l’ordinateur

Message par Jurassic Pork »

hello
gringo74 a écrit :Bonjour,
Lorsque que je lance la macro, j'obtient un message d'erreur. Faut-il un code en python pour que cela fonctionne ?
oui mais je ne l'ai pas encore fourni car en test.
gringo74 a écrit : De mon coté, c'est bien la fonction wait qui impact la macro. J'ai pu le confirmer .
Il y aurais t'il un moyen de contourner le problème sans utiliser python ?
Le souci c'est que le Basic est à ma connaissance "monothread" (me dire si je dis une bêtise :oops: ) c'est à dire que tu ne peux pas exécuter plusieurs macros en même temps.
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
gringo74
Membre OOrganisé
Membre OOrganisé
Messages : 96
Inscription : 21 août 2011 11:27

Re: [Résolu][Calc]Lancement selon mode de veille de l’ordina

Message par gringo74 »

Merci pour votre aide. J'attenderais la sortie de votre code en python.
libreoffice 7.6.5 et windows 10
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Résolu][Calc]Lancement selon mode de veille de l’ordina

Message par Jurassic Pork »

hello,
il y a la fonction timer de l'extension Easydev qui devrait pouvoir t'aider. Voir ici.
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04