XL 2016 Sauvegarder et fermer Excel après inactivitée

Danybrett

XLDnaute Junior
Bonjour,

Après plusieurs recherches sur le net, j'ai trouvé une macro qui permet, au bout d'un temps d’inactivités sur le fichier, de sauvegarder le fichier puis de le fermer. (pour être considéré "actif" il faut cliquer sur des cases, écrire,... le scrolling n'est pas considéré).

La macro est composée de 3 parties:

Partie 1:

Option Explicit
Private Sub Workbook_Open()
Call SetTimer
End Sub

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

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Call StopTimer
Call SetTimer
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
Call StopTimer
Call SetTimer
End Sub


Cette partie est écrite dans "ThisWorkbook" et est donc lancée des le début de la macro (pour ce qu'elle fait j'avoue que mis à part aller chercher d'autre macro dans un Module, je ne sais pas :oops: )

Partie 2:

Option Explicit
Dim DownTime As Date

Sub SetTimer()
DownTime = Now + TimeValue("00:10:00")
Application.OnTime EarliestTime:=DownTime, _
Procedure:="ShutDown", Schedule:=True
End Sub

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

Sub ShutDown()
ThisWorkbook.Save
Application.Quit
End Sub


Cette partie est écrite dans un "module" et est appelée par la macro qui est dans "ThisWorkbook" je sais juste que DownTime = Now + TimeValue("00:10:00") est le temps d'attente entre chaque action, en gros la au bout de 10min d’inactivités le fichier sauvegarde avec et ferme le fichier avec la partie Sub ShutDown()

Partie 3:

Option Explicit

Cette partie est écrite sur chaque Feuille utilisée (ou pas) du classeur. Mais je dois avouer que je ne sais pas à quoi elle sert, je sais juste quand sans ça, ça ne marche pas...


Alors cette macro fonctionne très bien, je l'utilise régulièrement. Mais elle a 2 problèmes:
- La macro, au bout des 10min d'inactivité, ferme tous les fichier Excel ouvert et pas seulement celui la.
- Des fois, quand on ouvre un autre fichier Excel, la macro bug et se stop.

Quelqu'un aurait une solution pour que cette macro, au bout des 10min d’inactivités ne ferme uniquement ce fichier Excel et non les autres ouverts ? Et aussi qu'elle soit indépendante des autres Fichier excel qui pourraient être ouverts ?

Je ne sais pas si j'ai été suffisamment explicite dans mon explication, je vous transmets un fichier Excel avec cette macro.


Cordialement :)
 

Pièces jointes

  • Classeur inactivitée.xlsm
    14.8 KB · Affichages: 33

Danybrett

XLDnaute Junior
Salut et merci pour vos réponses :)

phlaurent55, j'ai testé ta méthode mais au bout des 10min le ThisWorkbook.Close me met une erreur :(

BISSON Nicole, j'ai testé ton premier lien et il fonctionne, il ferme bien que ton fichier au bout des 2min.

Par contre quand j'ouvre un fichier Excel avec ta macro et qu’après j'en ouvre un autre, et que je fais "activer la modification" ta macro se stop avec une erreur (comme pour c'elle que j'avais trouvé avant) à cette ligne la: Application.OnTime HeureArrêt, "Fin".

Par contre pour ton deuxième lien, c'est trop compliqué pour moi, ça fait quoi en plus (ou en moins) ? :)
 

Discussions similaires