[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:

MJ13

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

Re

Comme ce problème m'interpelle, j'ai extrait de Radio XlD V3 sa substantifique moelle.

A toi de voir si tu peux en tirer quelque chose. Mais toute sa philosophie y est :).
 

Pièces jointes

  • Ontime_Simple_MJ2013.xlsm
    21.7 KB · Affichages: 65

Neo37

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

Merci Michel, ce code est plus simple que celui de mon fichier de base, avec un petit Thisworkbook.save au bonne endroit j'enregistre bien en boucle, mais je ne suis toujours pas capable de sortir de la boucle quand je ferme le fichier.
 

MJ13

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

Re

Merci Michel, ce code est plus simple que celui de mon fichier de base, avec un petit Thisworkbook.save au bonne endroit j'enregistre bien en boucle, mais je ne suis toujours pas capable de sortir de la boucle quand je ferme le fichier.

Le plus important pour arrêter un timer a été dit entre autre par JB au début de cette discussion avec ce code.

Code:
Application.OnTime temps, Procedure:="majHeure", Schedule:=False

Mais on peut avoir des surprises, si on est en en édition de cellule par exemple, il peut être inactif.
 

Neo37

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

Re

Je me retrouve avec ça dans un module
Code:
Public durée As Date
Sub Lance_Ontime_Temps()
Set the = Workbooks(ThisWorkbook.Name).Sheets(ActiveSheet.Name)
durée = the.Cells(1, 4).Text
the.Cells(1, 5) = Now
the.Cells(1, 6) = Now + durée

ThisWorkbook.Save

Application.OnTime Cells(1, 6), "Lance_Ontime_Temps"
End Sub
Et ça dans ThisWorkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime temps, Procedure:="Lance_Ontime_Temps", Schedule:=False

End Sub

Mais cela ne marche pas, ça bug à la fermeture...
 

MJ13

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

Re

Personnellement, j'aurais plutôt tester:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.OnTime Workbooks(ThisWorkbook.Name).Sheets(ActiveSheet.Name).cells(1,6), Procedure:="Lance_Ontime_Temps", Schedule:=False

 End Sub
 

Pièces jointes

  • Ontime_Simple_MJ2013Bis.xlsm
    22.8 KB · Affichages: 47
Dernière édition:

Neo37

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

Re bonjour,

Bon j'avance un peu, mais jamais jusqu'au bout.
En gros ça enregistre bien selon une tempo défini, qui recommence en boucle, la fermeture du fichier ne pose plus de problème.
Mais le côté de faire repousser l'enregistrement, en remettant la tempo à zéro, je n'y arrive pas.

Module
Code:
Public durée As Date
Sub Lance_Ontime_Temps()

Worksheets("Feuil1").Range("A1").Value = Now + durée
ThisWorkbook.Save
Application.OnTime Cells(1, 1), "Lance_Ontime_Temps"
End Sub

ThisWorkbook
Code:
Private Sub Workbook_Open()
durée = TimeValue("00:01:00")
Lance_Ontime_Temps
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Worksheets("Feuil1").Range("A1").Value = Now + durée
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Cells(1, 1), "Lance_Ontime_Temps", schedule:=False
ThisWorkbook.Close True
End Sub

Ma valeur de référence pour le prochain enregistrement se modifit bien, mais apparemment Excel garde en mémoire celle initiale.
 

Pièces jointes

  • MJ Essai 4.xls
    47 KB · Affichages: 25

MJ13

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

Bonjour à tous

Le VBA étant avant tout un langage de programmation évènementiel, il vaut mieux éviter le Workbook_SheetChange.

Voici un exemple reprenant ton dernier fichier:
 

Pièces jointes

  • MJ Timer Essai 4Bis.xls
    75 KB · Affichages: 48

Neo37

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

Salut à tous

En gros Michel tu veux dire que ce que je souhaite faire n'est pas possible?
Lancer une boucle d'enregistrement et la repousser quand on change la valeur d'une cellule d'une feuille.
 

MJ13

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

Bonjour Neo

En gros Michel tu veux dire que ce que je souhaite faire n'est pas possible?
Lancer une boucle d'enregistrement et la repousser quand on change la valeur d'une cellule d'une feuille.


Je n'ai pas dit cela. Mais j'ai déjà galèré sur ce genre de problème. Donc tu peux chercher une solution, il doit bien en exister une, mais j'essaie toujours de faire des codes simple, facilement adaptable. Mon emploi du temps ne me permet pas d'aller plus loin :eek:.

Pour ton problème, il faut de toute façon killer le processus avant d'en relancer un qui se relance à chaque évènement change. C'est peut-être là qu'est la solution.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 270
Membres
103 168
dernier inscrit
isidore33