Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion JerCaz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JerCaz

Guest
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.
 
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+
 
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:
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
 
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

Dernière édition:
Re : Enregistrement automatique après 5 minutes inactivité clavier/souris

Merci beaucoup pour votre aide!
C'est exactement ce que je cherchais!
Encore merci beaucoup!
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

I
Réponses
3
Affichages
2 K
Ispahan
I
R
Réponses
1
Affichages
27 K
Rhaly
R
N
Réponses
5
Affichages
3 K
neness0912
N
R
Réponses
13
Affichages
1 K
T
A
Réponses
1
Affichages
1 K
J
Réponses
2
Affichages
1 K
J
D
Réponses
5
Affichages
2 K
josemichele
J
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…