[Abandon]Comment stopper un Timer à la fermeture d'un fichier?

Neo37

XLDnaute Junior
Bonjour à tous,

Je fabrique un fichier qui est partagé et utilisé en même temps pas plusieurs utilisateurs, chaqu'un doit renseigner sa feuille, ce qui modifit des champs dans les autres feuilles. Donc pour voir ces changements il faut enregistrer le fichier, une sorte de rafraichissement. Il y a une automatisation d'enregistrement quand les utilisateurs modifient des choses dans leur feuille, mais en cas d'inactivité d'un utilisateur, il y avait un soucis de réactivité.
En cherchant sur le net j'ai trouvé un fichier qui joue sur l'inactivité, mais seulement une seule fois, du coup j'ai rajouté une ligne qui me fait une sorte de boucle. Seulement voilà, impossible de fermer le fichier sans devoir fermer complétement Excel, il se ré-ouvre tout seul, ce qui est un problème.

Quelqu'un saurait-il comme puis-je stopper le Timer lors de la fermeture du fichier? :)

Merci d'avance à ceux qui s'y intéresseront.

PS: Dans la version Excel de mon boulot, l'option pour un enregistrement automatique n'est pas présent.
 

Pièces jointes

  • ENR TEST.xls
    29.5 KB · Affichages: 56
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Comment stopper un Timer à la fermeture d'un fichier?

Bonjour,

On time

Avant de fermer le classeur, il faut annuler l'événement en cours.

Code:
Sub auto_close()
   On Error Resume Next
   Application.OnTime temps, Procedure:="majHeure", Schedule:=False
End Sub

Ferme le classeur après un temps d'inactivité dans les feuilles de calcul


http://boisgontierjacques.free.fr/fichiers/Evenementiel/OnTimeFermeInactif2.xls

Dans un module:

Code:
Public HeureArrêt
Public Délai
Public Reste
Public temps
Sub ProchainArret()
 HeureArrêt = Now + Délai
 Application.OnTime HeureArrêt, "Fin"
 Reste = Délai
End Sub

Sub Fin()
  On Error Resume Next
  Application.OnTime temps, Procedure:="majHeure", Schedule:=False
  Application.OnTime HeureArrêtt, Procedure:="Fin", Schedule:=False 'annule événnemennt
  ThisWorkbook.Close True
End Sub

Sub majHeure()
  On Error Resume Next
  Sheets(1).[A1] = Reste
  Reste = Reste - TimeValue("00:00:5")
  temps = Now + TimeValue("00:00:5")
  Application.OnTime temps, "majHeure"
End Sub
Dans ThisWorkBook:
Code:
Private Sub Workbook_Open()
  Délai = TimeValue("00:02:00")
  Reste = Délai
  ProchainArret
  majHeure
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 On Error Resume Next
 Application.OnTime HeureArrêt, Procedure:="Fin", Schedule:=False
 ProchainArret
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ThisWorkbook.Save
  On Error Resume Next
  Application.OnTime HeureArrêt, Procedure:="Fin", Schedule:=False  ' annule événnement
  Application.OnTime temps, Procedure:="majHeure", Schedule:=False
End Sub

JB
 
Dernière édition:

Neo37

XLDnaute Junior
Re : Comment stopper un Timer à la fermeture d'un fichier?

Merci JB, je suppose que c'est pour me mettre sur la voie, mais j'avoue que je ne vois pas trop quoi en retirer...
Mon niveau en VBA est assez bas...

Je me doute qu'il faut que j'utilise Workbook_BeforeClose(), mais...
 

Neo37

XLDnaute Junior
Re : Comment stopper un Timer à la fermeture d'un fichier?

Merci de ton aide degap05, j'ai voulu utiliser la commande Application.quit comme dans ton fichier, mais c'est un peu trop expéditif :p , je ne souhaite pas que ça ferme Excel, et je n'ai pas su ré-utiliser autre chose.
Pour mon cas le Timer va très souvent aller jusqu'au bout du décompte, du coup il doit recommencer en boucle, et je n'arrive pas à stopper ma boucle avant la fermeture du fichier.
 

Neo37

XLDnaute Junior
Re : Comment stopper un Timer à la fermeture d'un fichier?

Bonjour Pierrot,

Dans mes recherches sur le net, j'étais déjà tombé sur cet article, j'ai tenté de m'en servir, mais sans succès, ça ne m'aide pas à sortir de ma boucle à la fermeture du fichier. La commande Schedule m'a pas mal intrigué, mais je n'ai pas non plus réussit à m'en servir, du moins correctement.
 

Pierrot93

XLDnaute Barbatruc
Re : Comment stopper un Timer à la fermeture d'un fichier?

Re,

en plus de mettre à "False" la méthode "ontime", place un "end" dans l'événement "beforeclose" du classeur, dans le module "thisworkbook" :

Code:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime D, "ENR", Schedule:=False
End
End Sub

A voir... pas testé...
 

MJ13

XLDnaute Barbatruc
Re : Comment stopper un Timer à la fermeture d'un fichier?

Bonjour à tous


Tu peux tester ton fichier modifié.

Attention, c'est pas très simple à développer ce genre de programme et cela peut facilement buggé.
 

Pièces jointes

  • ENR TEST Bis.xls
    51 KB · Affichages: 55

Neo37

XLDnaute Junior
Re : Comment stopper un Timer à la fermeture d'un fichier?

Je tiens à remercier tout le monde pour votre :)

Michel, tu m'as modifié le fichier, mais pour faire autre chose que ce que je souhaite. Je ne veux pas qu'il ferme le fichier en cas d'inactivité, mais qu'il se sauvegarde régulièrement en cas d'inactivité.

Du coup je ne vois pas trop quoi en faire :rolleyes:
 

MJ13

XLDnaute Barbatruc
Re : Comment stopper un Timer à la fermeture d'un fichier?

Re

Du coup je ne vois pas trop quoi en faire :rolleyes:

Il suffit de suivre les codes.


Voir dans:

Code:
If arret = False Then
'MsgBox arret
    ThisWorkbook.Close 1
    
Else

Peut-être remplacé par:

Code:
If arret = False Then
'MsgBox arret
    ThisWorkbook.save

Mais attention, il faudra sans doute rebouclé sur le départ.
 

Neo37

XLDnaute Junior
Re : Comment stopper un Timer à la fermeture d'un fichier?

:) j'avais effectivement remplacer close par save, puis remis "départ" pour reboucler.

Mais le résultat de change rien par rapport au fichier de base, quand je souhaite fermer le fichier, si Excel lui est toujours ouvert, le fichier se réactive tout seul, car la tempo court toujours, quand elle est écoulée comme elle souhaite refaire un enregistrement elle rouvre le fichier. C'est là qu'est mon soucis.
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 230
Membres
103 160
dernier inscrit
Torto