Comment fermer automatiquement un fichier ?
Il vous arrive peut-être, quand vous quittez votre poste de travail pour quelques minutes, de laisser votre feuille Excel ouverte. Ce n'est pas sans danger. Vous pouvez perdre des données en cas de coupure du courant. De plus, un indiscret peut lire les informations contenues dans votre feuille, voire modifier certaines valeurs à votre insu...
Pour éviter de tels risques, créez une macro chargée de fermer automatiquement la feuille si aucune activité n'y est détectée pendant un temps donné. Pour cela, ouvrez votre feuille, puis déroulez le menu Outils, Macro, Editeur Visual Basic. Dans la zone Projet, double-cliquez sur ThisWorkbook et tapez le code ci-dessous :
Option Explicit
Dim
DELAI As Date
Public
HeureFin As Date
------------------------------------------------------------------------------
Private Sub
Workbook_Open()
DELAI = "00:00:20"
HeureFin = Now() + DELAI
Feuil1.[A1] = Now
Feuil1.[A2] = HeureFin
Application.OnTime HeureFin, "fermer"
End Sub
------------------------------------------------------------------------------
Private Sub
Workbook_SheetActivate(ByVal
Sh As Object)
On Error Resume Next
'Annule l'ordre de fermeture précédant
Application.OnTime EarliestTime:=HeureFin, Procedure:="fermer", Schedule:=False
On Error GoTo 0
HeureFin = Now() + DELAI
Feuil1.[A2] = HeureFin
Application.OnTime HeureFin, "fermer"
End Sub
------------------------------------------------------------------------------
Private Sub
Workbook_SheetChange(ByVal
Sh As Object, ByVal
Target As
Range)
If
Target.Address <> "$A$1" And Target.Address <> "$A$2" Then
On Error Resume Next
'Annule l'odre de fermeture précédant
Application.OnTime EarliestTime:=HeureFin, Procedure:="fermer", Schedule:=False
On Error GoTo 0
HeureFin = Now() + DELAI
Feuil1.[A2] = HeureFin
Application.OnTime HeureFin, "fermer"
End If
End Sub
------------------------------------------------------------------------------
Private Sub
Workbook_SheetSelectionChange(ByVal
Sh As Object, ByVal
Target As
Range)
On Error Resume Next
'Annule l'odre de fermeture précédant
Application.OnTime EarliestTime:=HeureFin, Procedure:="fermer", Schedule:=False
On Error GoTo 0
HeureFin = Now() + DELAI
Feuil1.[A2] = HeureFin
Application.OnTime HeureFin, "fermer"
End Sub
Puis dans un module insérez le code suivant :
Private Sub
fermer()
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
ThisWorkbook.Close
End Sub
Par défaut, le délai d'activation, défini par l'instruction Const delai = "00:00: 20" est fixé à 20 secondes, mais vous pouvez saisir une tout autre valeur sous la forme HH:MM:SS (heures : minutes : secondes). Enregistrez le fichier.
A l'ouverture, le minuteur se lancera automatiquement et se remettra à zéro à chaque modification de la feuille (changement de contenu d'une cellule ou changement de la sélection). Si le minuteur atteint le délai préalablement fixé, une sauvegarde se fera automatiquement avant fermeture du fichier.
ASTUCE PRÉCÉDENTE :
ASTUCE SUIVANTE :
"En cours de rédaction, merci de patienter..."