[Résolu][Calc] fermer un fichier après 15 min d'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 !
r@p@ce15
Fraîchement OOthentifié
Messages : 9
Inscription : 29 nov. 2006 12:58

[Résolu][Calc] fermer un fichier après 15 min d'inactivité

Message par r@p@ce15 »

Bonjour à tous,

Dans le cadre de mon travail on me demande s'il est possible de fermer un fichier calc après un certains laps de temps d'inactivité.

Quelqu'un aurait-il une idée ou une piste pour réaliser cela ?
Dernière modification par r@p@ce15 le 06 avr. 2010 10:59, modifié 2 fois.
OOo v.2.3.0
WinXP Pro SP2
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26200
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Inactivité d'un fichier

Message par Dude »

Salut,
r@p@ce15 a écrit :fermer un fichier calc après un certains laps de temps d'inactivité.
Ton titre ne reflète donc pas le problème exposé. Merci de corriger afin de faciliter les recherches ultérieures.

Il convient de définir ce que tu appelles "laps de temps" : une heure donnée ou une temporisation. Cela peut se faire en générant un sémaphore.

Ensuite, il suffit d'écouter la feuille. En faisant une recherche sur "listener", tu trouveras des exemples.

Le terme "inactivité" est génant car il conviendra de régénérer le sémaphore.

La fermeture se fera avec un ThisDocument.close(true). Je n'aborde pas la problèmatique de l'enregistrement de données.

:idea:
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
r@p@ce15
Fraîchement OOthentifié
Messages : 9
Inscription : 29 nov. 2006 12:58

Re: [Calc] fermer un fichier après 15 min d'inactivité

Message par r@p@ce15 »

Merci pour ta réponse,
J'ai comme indiqué modifié le titre, j'espère qu'il est plus adéquat.

Je recherche donc avec listener et sémaphore...

je ne mets pas résolu tout de suite, je mettrais un lien vers les posts qui m'auront aidés.
OOo v.2.3.0
WinXP Pro SP2
r@p@ce15
Fraîchement OOthentifié
Messages : 9
Inscription : 29 nov. 2006 12:58

Re: [Calc] fermer un fichier après 15 min d'inactivité

Message par r@p@ce15 »

Chose promise chose due...

Voici le pistes que j'ai utilisée pour résoudre mon problème.
Le post suivant : avec notamment le Fichier d'Alain de La Chaume qui m'a permis d'afficher la date...

Ensuite, le problème des listeners m'a paru par trop complexe pour gérer l'inactivité. J'ai donc décidé de faire un test toutes les 30secondes afin de voir si le fichier avait été modifié. Si oui, on remet la temporisation à 0 et on enregistre automatiquement si non, le décompte continue jusqu'à fermeture.

Les données :
la cellule A1 contient la valeur de la tempo en minutes
La cellule B1 contient la formule suivante : =MAINTENANT() + TEMPS(0;A1;0)

Ce qui donne

Code : Tout sélectionner

REM  *****  BASIC  *****
option explicit

Private oDoc as object

Sub Main
	oDoc = thisComponent
	oDoc.calculate
	decompte()
End Sub



Sub decompte()
	dim oFeuil as object, oTime as object
	Dim Hrs as integer, Min as integer, Sec as integer
	Dim Tempo as variant
	Dim hFerm As string, hMaint As string
	
	
	REM instructions de la macro
	oFeuil = oDoc.sheets.getByName("A_masquer")
	oTime = oFeuil.getCellRangeByName("B1")
	
'xRay oTime
	
	Hrs = Hour(oTime.Value)
	Min = Minute(oTime.Value)
	Sec= Second(oTime.value)
			
	hMaint = TimeSerial(Hour(now),Minute(now),Second(now))
	hFerm = Timeserial(Hrs, Min, Sec)
	Tempo = Timevalue(hFerm) - Timevalue(hMaint)
	Min = Minute(Tempo)
	Sec = Second(Tempo)
	If oDoc.isModified then
'		MsgBox "Ok Modifié" & chr(13) & "On remet à 0",64,"Modifié ?"
		oDoc.calculate
		oDoc.Store
		Call decompte
	else
'		MsgBox "Pas Modifié" & chr(13) & "On continue",64,"Modifié ?"
		oDoc.setTitle("Attention ce fichier va se fermer dans moins de " & Min & " minute(s) et " & Sec & " seconde(s)")
		if hMaint = hFerm then 
			thisComponent.store
			thisComponent.close(True)
			exit sub ' SORTIE CONDITIONNELLE
		end if
	endif
	Wait 30000
	Call decompte
End Sub
OOo v.2.3.0
WinXP Pro SP2