Problème "Save&Close" d'un fichier après Xmn d'inactivité

Bonjour à tous,

Je me permet de vous solliciter pour un petit souci que je rencontre sur mon fichier Excel. Je cherche à créer une macro afin qu'un fichier se ferme après Xmn d'inactivité (absence de modification d'une cellule par exemple) seulement en écriture, si mon utilisateur se promène simplement sur le fichier je souhaite qu'il se fasse éjecter aussi à terme du compte à rebours (le mouvement de souris et de changement d'onglet ne doit pas être pris en compte du coup).

J'ai fais pas mal de recherche et je suis tombé sur deux codes qui ressemblent à ce que je souhaite mais avec chacun une fonction manquante.

Le 1er reset le timer dès que je modifie une cellule et qui à la suite d'une activité de Xmn me ferme et enregistre le fichier sans faire de distinction Ecriture/Lecture seule. Il me manquerait seulement d'appliquer le code seulement en écriture ici.

"ThisWorkbook"

Private Sub Workbook_Open()

Arrêt = False: Laps = Timer
Durée = TimeValue("00:10:05")
Départ

End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Arrêt = True
Laps = Timer
End Sub

"Module1"

Option Explicit

Public Durée As Date
Public Arrêt As Boolean
Public Laps As Double

Sub Départ()

Dim D As Date
D = Now + TimeValue(Durée)
Application.OnTime D, "FermerLeClasseur"
Durée = TimeValue("00:10:05")
End Sub

Sub FermerLeClasseur()

Dim M As Integer
Dim S As Integer
Dim R As String

If Arrêt = False Then
    ThisWorkbook.Close True
Else
    Laps = Timer - Laps
    M = Int(Laps / 60)
    S = Int(Laps)
    R = TimeValue("00:" & M & ":" & S)
    Durée = TimeValue(Durée) - TimeValue(R)
    Arrêt = False
    Départ
End If

End Sub

Le 2nd que j'ai ferme et enregistre le fichier après Xmn dès l'ouverture seulement en écriture. Il me manquerait seulement à reset ce timer dès que je modifie une cellule.

"ThisWorkbook"

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Call StopTimer
End Sub

Private Sub Workbook_Open()
  Call StartTimer
End Sub

"Module1"

Sub FermerWbk()
  If ThisWorkbook.ReadOnly = False Then
    SendKeys ("{TAB}")
    ThisWorkbook.Close SaveChanges:=True
  End If
End Sub

Sub StartTimer()
  RunWhen = Now + TimeValue("00:10:00")
  Application.OnTime RunWhen, "FermerWbk"
End Sub

Sub StopTimer()
  On Error Resume Next
  Application.OnTime EarliestTime:=RunWhen, Procedure:="FermerWbk", Schedule:=False
  On Error GoTo 0
End Sub

Après plusieurs essais je sèche, j'ai essayé de mixer les deux codes mais je n'arrive pas à obtenir ce que je souhaite. Je pense que ça doit être un petit truc à intégrer mais rien à faire je n'y arrive pas dans un sens comme dans l'autre les codes ne se ressemblant pas trop..

Avez-vous une petite idée?

Un immense merci d'avance pour vos réponses!

Baltro

Rechercher des sujets similaires à "probleme save close fichier xmn inactivite"