Enregistrement automatique après 5 minutes inactivité clavier/souris

JerCaz

XLDnaute Occasionnel
Bonjour le forum,

je sollicite votre aide afin de réaliser une macro qui permettrait un enregistrement automatique du classeur après 5 minutes d'inactivité du clavier et de la souris.

Je sais que dans les macros complémentaires, il en existe une permettant un enregistrement toutes les X minutes avec "Outils/Enregistrement automatique". Mais ce n'est pas ce que je cherche. Je souhaite que l'enregistrement automatique ne se fasse qu'après 5 minutes d'inactivité clavier/souris. Et bien sûr, sans demander confirmation (ce qui n'aurait aucun intérêt dans ce cas...)

Mais cela est-il réellement possible?
Si oui, quelqu'un aurait-il une idée pour me mettre sur la voie de la macro à rédiger...

Merci d'avance pour votre aide.
Bien cordialement,

Jérôme.
 

job75

XLDnaute Barbatruc
Re : Enregistrement automatique après 5 minutes inactivité clavier/souris

Bonjour JerCaz,

On peut utiliser l'évènement SheetChange lié à l'entrée de données dans le classeur (a priori via le clavier donc).

Quant à l'événement MouseMove il ne se déclanche pas sur une feuille de calcul.

Donc solution limitée, mais facile à réaliser. Cela vous intéresse ?

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Enregistrement automatique après 5 minutes inactivité clavier/souris

Bonjour,

Dans un module:
Code:
Public HeureArrêt
Sub ProchainArret()
 HeureArrêt = Now + TimeValue("00:02:00")
 Application.OnTime HeureArrêt, "Fin"
 Sheets(1).[A1]=HeureArrêt
End Sub

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

Dans ThisWorkBook:

Code:
Private Sub Workbook_Open()
 ProchainArret
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
  'ThisWorkbook.Saved = True
  On Error Resume Next
  Application.OnTime HeureArrêt, Procedure:="Fin", Schedule:=False  ' annule événnement
End Sub

Enregistrer avant essai:
http://boisgontierjacques.free.fr/fichiers/Evenementiel/OnTimeFermeInactif.xls
http://boisgontierjacques.free.fr/fichiers/Evenementiel/OnTimeFermeInactif2.xls

JB
 
Dernière édition:

kllmoon

XLDnaute Occasionnel
Re : Enregistrement automatique après 5 minutes inactivité clavier/souris

Voici une solution selon moi, pas exactement ce que tu cherches mais bon c'est réalisable.

dans This Workbook :

Code:
Private Sub workbook_open()
Application.OnTime TimeValue("00:05:00"), "test12"
End Sub
Ceci part le timer à l'ouverture.

Dans chacunes de tes feuilles :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Application.OnTime Now + TimeValue("00:05:00"), "test12", , Schedule:=False
Application.OnTime Now + TimeValue("00:05:00"), "test12"
End Sub
À tout changement de sélection, le timer est réinitialiser.

Dans un module :
Code:
Private Sub test12()
For Each w In Application.Workbooks
w.Save
Next w
End Sub

Fait ta sauvegarde automatique
 

job75

XLDnaute Barbatruc
Re : Enregistrement automatique après 5 minutes inactivité clavier/souris

Bonjour JB, kllmoon,

Dans le même esprit bien sûr ces macros dans Thisworkbook :

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Source As Range)
Attend
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Attend
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save
On Error Resume Next
Application.OnTime temps, "Enregistre", , False
End Sub

Et dans le Module1 :

Code:
Public temps 'mémorise la valeur

Sub Attend()
On Error Resume Next
Application.OnTime temps, "Enregistre", , False 'l'action précédente ne sera pas exécutée
temps = Now + 5 / 1440
Application.OnTime temps, "Enregistre"
End Sub

Sub Enregistre()
ThisWorkbook.Save
End Sub

Fichier joint.

Edit : j'ai enlevé la macro SheetChange qui ne sert à rien, par contre, JB a raison, j'ai ajouté la macro BeforeClose

A+
 

Pièces jointes

  • Classeur1.xls
    39.5 KB · Affichages: 114
  • Classeur1.xls
    39.5 KB · Affichages: 115
  • Classeur1.xls
    39.5 KB · Affichages: 111
Dernière édition:

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg