Comment fermer un classeur après un délai d’inactivité

8
22061

Dans ce cours nous allons voir comment fermer un classeur après un délai d’inactivité, car souvent quand on à un fichier Excel qui est disponible sur un serveur et ou d’autre personne utilise le fichier aussi, il arrive très souvent qu’une personne oublie de fermer le fichier de son côté et quand vous voulez l’utiliser hé ben vous ne pouvez pas modifier l’original car il est encore ouvert autre part. C’est pourquoi nous allons voir comment remédier à cela en fermant un classeur après un délai d’inactivité

Le fonctionnement

Le fonctionnement de de fermer un classeur après un délai inactivité va se passer comme suite. Quand on ouvre le fichier Excel on va demander au code de prendre le temps actuel et d’ajouter x minute dans notre exemple cela serra 1 min.

Une fois le temps atteint nous allons demander au code fermer le fichier Excel. Cela est la première partie par contre quand nous allons placer des informations dans une cellule, faire de calcule où changer de page nous allons arrêter notre compteur et puis la relancer.

Donc nous allons créer 3 procédures pour cela

Procédure pour Fermer un classeur après un délai

Nous allons créer un nouveau module et dans ce nouveau module nous allons déclarer une variable publique que nous allons nommer Activity0. Cette variable publique va nous servir à stocker le temps ou une action devrais avoir lieux.

fermer un classeur après un délai d’inactivité

Il est temps de créer notre procédure de fermeture de classeur après un délai, et pour cela nous allons configurer notre variable public que nous avons nommé Activity0 avec le code suivant.

fermer un classeur après un délai d’inactivité

Ici nous avons programmer notre variable en disant de prendre le temps actuel et d’ajouter 1 min. désormais nous allons dire au code que quand le temps est venu il faudra lancer une autre procédure et cette autre procédure nous allons programmer la fermeture du fichier avec la fonction application.ontime.

fermer un classeur après un délai d’inactivité

Procédure pour sauvegarder et fermer un fichier Excel

La partie fun commence ici de comment fermer un classeur après un délai d’inactivité. Car c’est ici que nous allons programmer la fermeture où ce que vous voulez comme afficher un message par exemple au moment que l’heur est arrivé.

Mais dans notre exemple nous allons sauvegarder puis fermer le fichier. Et cela nous allons créer une nouvelle procédure que nous allons nommer Fermeture donc le même nom que mentionner dans début sinon ça ne marchera pas. Et dans cette procédure nous allons tout simplement dire que nous voulons sauvegarder et fermer se fichier Excel.

fermer un classeur après un délai d’inactivité

INFO si vous voulez fermer le fichier sans sauvegarder vous devez retiré .save et ajouter le code suivant

fermer un classeur après un délai d’inactivité

Sinon vous allez avoir le message de demande de sauvegarde qui empêchera de fermer le fichier

fermer un classeur après un délai d’inactivité

Voila il est temps de créer la procédure qui annule la fermeture

Procédure qui annule la fermeture

Donc nous avons créé les procédures pour fermer un classeur après un délai d’inactivité mais quand on fait quelque chose il n’y a encore rien pour arrêter cela donc quoi qu’il arrive notre fichier va fermer après 1 min.

Nous allons créer une nouvelle procédure que nous allons nommer fin et dans cette procédure nous allons faire comme dans début faire référence à fermeture sauf que nous allons dire qu’il s’arrête avec le code suivant

fermer un classeur après un délai d’inactivité

L’assemblage des procédures

Il est grand temps de faire fonctionner le tout c’est pourquoi nous allons lancer notre procédure début au moment d’ouvrir le fichier Excel pour cela il faut aller sur thisworkbook et changer l’événement open pour placer le code suivant.

fermer un classeur après un délai d’inactivité

Voilà désormais quand on ouvre notre fichier Excel nous allons faire appel à la procédure début qui fermera le fichier après 1 min mais nous voulons qu’au moment que nous sélectionnons quelque chose le fichier ne se ferme pas.

Donc au moment que nous sélectionnons une cellule alors nous allons dire d’arrêter le compteur avec la procédure fin puis direct après nous allons relancer la procédure début qui remet notre timer à 0

fermer un classeur après un délai d’inactivité

Nous pouvons faire la même chose pour quand nous plaçons des informations dans une cellule ou si nous changeons de page comme suite.

fermer un classeur après un délai d’inactivité

Vous pouvez utiliser cette méthode aussi pour uniquement fermer un formulaire après un certain temps ou afficher un message.

J’espère que ce court vous sera utile est que vous pouvez l’utiliser dans vos application Excel surtout s’ils sont partagés sur un serveur avec vos autres collègues. Le fichier est disponible sans code sur le ici et je vous retrouve dans un prochain court salut tout le monde

8 Commentaires

  1. Bonjour Patrice,

    j’ai tenté de creer une fermeture en 2 temps : demander au bout de « 10 sec » via fenetre pop-up et si pas de réponse au bout de « 20 sec » alors forcer la fermeture en enregistrant automatiquement,

    Malheureusement je n’y arrive pas, voici mon code dérivé du tiens, merci beaucoup d’ailleurs !!

    Option Explicit

    Public Activity0 As Date
    Public Activity1 As Date

    Sub Début()

    Activity0 = Now + TimeValue(« 00:00:10 »)
    Application.OnTime Activity0, « Fermeture »

    Activity1 = Now + TimeValue(« 00:00:20 »)
    Application.OnTime Activity1, « Fermeture1 »

    End Sub

    Sub Fermeture()

    With ThisWorkbook
    .Close
    End With

    End Sub

    Sub Fermeture1()

    Application.DisplayAlerts = False

    With ThisWorkbook
    .Save
    .Close
    End With

    End Sub

    Sub fin()

    On Error Resume Next

    Application.OnTime Activity0, « Fermeture », , False
    Application.OnTime Activity1, « Fermeture1 », , False

    End Sub

  2. Bonjour,

    Lorsque je crée la macro, j’enregistre suivant la vidéo mais lorsque je lance la macro une erreur 438 apparait et lorsque je débog (Application.Onetime Activity0, « Fermeture ») apparait en surbrillance. Je suppose que ça bloque à cette étape..

  3. Bonjour,

    je lance l’ouverture d’une base access depuis excel , mais j’aimerai qu’une fois la base access ouverte , fermer excel, or il ferme excel et access systématiquement , avez vous une idée ?

    Merci

  4. Bonjour,
    Votre code fonctionne très bien …. ou presque !!
    Le souci pour ma part est : la fermeture au bout du délai même si activité. Grrrrrr

    Une solution ???
    Merci d’avance

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.