[Résolu][Calc] mot de passe après inactivité

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 !
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
Messages : 176
Inscription : 03 août 2012 09:45

[Résolu][Calc] mot de passe après inactivité

Message par kikoo74910 »

Bonjour,

Je dispose d'une macro qui lance une boite dialogue me demandant un mot de passe à chaque ouverture du fichier.
Cette macro fonctionne mais je souhaiterais lancer cette macro après 10 minutes d'inactivité sur mon ordinateur ou fichier.
Malgré les différents posts sur le forum, je n'arrive pas a adapter ce que je souhaite faire.
Pourriez-vous m'aidez SVP?

Voici le code pour demander un mot de passe.

Code : Tout sélectionner

Sub password

call cacherFullScreenBarre()
Dim Dlg As Object, MotPasse as String
	DialogLibraries.LoadLibrary("Standard")
	Dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
	If Dlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
		MotPasse = dlg.getControl("txtMP").Text
		If MotPasse = "mot de passe" then
			Dlg.dispose
		Else
			Ouverture
		End If
		
	Else
		thisComponent.Close(True)			
	End If
End Sub
Dernière modification par kikoo74910 le 26 juin 2017 17:39, modifié 1 fois.
Version: librroffice 7.5.9; windows 10(x64)
Avatar de l’utilisateur
ThierryT
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 467
Inscription : 10 nov. 2012 17:05

Re: [Calc] mot de passe après inactivité

Message par ThierryT »

Voir ce fil et l'adapter à la problématique posée : https://forum.openoffice.org/fr/forum/v ... ner+alarme
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....

“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
Messages : 176
Inscription : 03 août 2012 09:45

Re: [Calc] mot de passe après inactivité

Message par kikoo74910 »

Merci de votre aide,
cependant j'ai déjà vu ce fil mais malheuresement je n'est pas les compétences necessaire pour l'adapté.
Version: librroffice 7.5.9; windows 10(x64)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] mot de passe après inactivité

Message par zeguedon »

Bonjour,

A tester :
1) nécessite une cellule contenant la fonction MAINTENANT() car elle s'actualise automatiquement lorsque le fichier est modifié. J'ai choisi A1 pour l'exemple.
2) macro affectée à éventement : Ouvrir le document menu (Outils>Personnaliser onglet événements)
3) la variable z défini le nombre de minute d'attente. Elle est paramétrée à 1 minute pour cet exemple

Code : Tout sélectionner

Sub Main
z = 1 'Temps d'attente en minute
print "Timer activé pour " & z & " minute(s)"
Do
x = Thiscomponent.Sheets(0).GetCellRangeByName("A1").String
y = CLng(trim(Str(Minute(TimeValue(Time) - TimeValue(x)))))
Wait 1000
If y >= z Then exit do
Loop
Print "Connecter ici la routine qui va bien"	
End Sub
et le fichier qui va avec :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
Messages : 176
Inscription : 03 août 2012 09:45

Re: [Calc] mot de passe après inactivité

Message par kikoo74910 »

La macro ci-jointe ressemble beaucoup à ce que je souhaiterais obtenir,
mais je constate un petit problème:
La macro s'active bien au bout d'une minute la première fois au lancement du fichier mais ensuite, que se soit avec ou sans activité sur le fichier, la macro ne se lance plus.
En résumé, elle ne s'active qu'une seul fois, soit 1 minute après avoir demmaré le fichier.
Version: librroffice 7.5.9; windows 10(x64)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] mot de passe après inactivité

Message par zeguedon »

Re,
kikoo74910 a écrit :La macro s'active bien au bout d'une minute
Non ! la macro s'active à l'ouverture du document ou lorsqu'il est rechargé. Au bout d'une minute, le message : Connecter ici la routine qui va bien signifie que le temps d'attente est écoulé (1 minute pour l'exemple).

Il faut que tu remplaces :

Code : Tout sélectionner

Print "Connecter ici la routine qui va bien" 
par l'appel à ta macro qui demande le MDP ET à la fin de ta macro qui demande le MDP, il faut ajouter un appel à la macro que je viens de te donner afin que la boucle redémarre.
 Ajout : mais avant, il faut aussi demandé à ce que les formules soit recalculées pour que la valeur de A1 s'actualise 
A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
Messages : 176
Inscription : 03 août 2012 09:45

Re: [Calc] mot de passe après inactivité

Message par kikoo74910 »

Encore merci de votre patience,
Les problèmes entre les liens avec les différentes macros sont réglés.
Cependant la macro s'active obligatoirement que se soit avec ou sans inactivité.
Il faudrait quel s'active uniquement en cas d'inactivité prolongé (dans notre cas: 1 minute)
Version: librroffice 7.5.9; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
Messages : 176
Inscription : 03 août 2012 09:45

Re: [Calc] mot de passe après inactivité

Message par kikoo74910 »

Je pense comprendre mon erreur, mais comment faire pour actualiser A1 dès qu'une cellule dans le fichier est modifiée ?
Version: librroffice 7.5.9; windows 10(x64)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] mot de passe après inactivité

Message par zeguedon »

kikoo74910 a écrit :mais comment faire pour actualiser A1 dès qu'une cellule dans le fichier est modifiée
Si tu regardes bien, A1 s'actualise dès qu'une autre cellule est modifiée

Pas facile de jouer au devinettes sans voir ce que tu as fais.

Pour actualiser les formules par macro :

Code : Tout sélectionner

Thiscomponent.calculateAll 
A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] mot de passe après inactivité

Message par zeguedon »

Bon je crois comprendre ce qui ne fonctionne pas. La fonction MAINTENANT() ne s'actualise que sur la feuille active. Donc si tu travailles sur une autre feuille, elle conserve son ancienne valeur jusqu'à ce tu affiches la feuille où elle est écrite. Il faut donc que toutes les feuilles du classeur aient une fonction MAINTENANT() et toujours à la même adresse.

Avec ce nouveau code, tu n'as plus à te soucier de cette fonction MAINTENANT. Elle est écrite automatiquement par la macro dans la cellule AMJ1048576 de chaque feuille que tu visites (tout en bas à droite)
J'ai aussi modifié la boucle Do Loop, en remplaçant Wait 1000 par Wait 60000, afin que la valeur retournée par la fonction MAINTENANT soit vérifiée toutes les minutes au lieu de toutes les secondes :idea:

Code : Tout sélectionner

Option Explicit

Sub Decompte
Dim oDoc As Object, feuilActive As Object, cel As Object
Dim tempsZ As Long, tempsY As String, tempsX As String
oDoc = Thiscomponent : feuilActive = oDoc.CurrentController.ActiveSheet
tempsZ = 1 'Définr ici le nombre de minute à décompter
oDoc.calculateAll 
print "Timer activé pour " & tempsZ & " minute(s)"	
Do
cel = feuilActive.GetCellRangeByName("AMJ1048576")
if cel.Formula = "" Then cel.SetFormula("=NOW()")
tempsX = cel.String
tempsY = CLng(trim(Str(Minute(TimeValue(Time) - TimeValue(tempsX)))))
If tempsY >= tempsZ Then exit do
Wait 60000
Loop
Print "Connecter ici la routine qui va bien"
Decompte 	
End Sub
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
Messages : 176
Inscription : 03 août 2012 09:45

Re: [Calc] mot de passe après inactivité

Message par kikoo74910 »

Merci zeguedon pour l'aide que tu m'as apporté.
Concernant la première macro, elle fonctionne mais elle a tendance à buger si on choisi 1 minute. J'ai choisi 3 minutes et là plus de soucie.
Encore merci.
Version: librroffice 7.5.9; windows 10(x64)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Résolu][Calc] mot de passe après inactivité

Message par zeguedon »

Ok, mais je te conseille quand même de modifier Wait 1000 par Wait 60000 sinon ta macro va vérifier inutilement toutes les secondes la valeur de la cellule MAINTENANT(), la comparer à l'heure de ta bécane, effectuer une soustraction pour voir si la différence dépasse le temps défini pour le décompte. Une fois par minute suffit amplement.

A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux