Fermeture_auto_fichier

 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 SUIVANTE : 
"En cours de rédaction, merci de patienter..."
Share by: