Note: The other languages of the website are Google-translated. Back to English

Comment enregistrer et fermer automatiquement un fichier Excel après un certain temps d'inactivité?

Dans certains cas, par exemple en laissant un fichier Excel sur un disque partagé, lorsque le fichier est toujours ouvert par un utilisateur, d'autres ne peuvent pas modifier le classeur. Alors, comment fermer automatiquement le fichier après un certain temps d'inactivité afin de faciliter le travail des autres? Cet article vous aidera avec la méthode VBA.

Enregistrer et fermer automatiquement un fichier Excel après un certain temps d'inactivité avec le code VBA


Enregistrer et fermer automatiquement un fichier Excel après un certain temps d'inactivité avec le code VBA


Pour enregistrer et fermer automatiquement un fichier Excel après un certain temps d'inactivité, procédez comme suit.

1. Ouvrez le classeur dont vous avez besoin pour le sauvegarder automatiquement et le fermer après un certain temps d'inactivité. Appuyez ensuite sur le autre + F11 clés ensemble pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. dans le Microsoft Visual Basic pour applications fenêtre, veuillez double-cliquer sur Ce classeur dans le volet droit pour ouvrir la fenêtre Code. Ensuite, copiez et collez ci-dessous le code VBA dans la fenêtre Code. Voir la capture d'écran:

Code VBA 1: enregistrement automatique et fermeture d'un fichier Excel après un certain temps d'inactivité

Dim xTime As String
Dim xWB As Workbook

Private Sub Workbook_Open()
'Updated by Extendoffice 2019/1/20
    On Error Resume Next
    xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:20", , , , , 2)
    Set xWB = ActiveWorkbook
    If xTime = "" Then Exit Sub
    Reset
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Sub Reset()
    Static xCloseTime
    If xCloseTime <> 0 Then
        ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , False
    End If
    xCloseTime = Now + TimeValue(xTime)
    ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , True
End Sub

3. Continuez ensuite à cliquer insérer > E/S, contrôle PID ou de communication, et copiez et collez le code ci-dessous dans la fenêtre Module. Voir la capture d'écran:

Code VBA 2: enregistrement automatique et fermeture d'un fichier Excel après un certain temps d'inactivité

Sub SaveWork1()
'Updated by Extendoffice 2019/1/20
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    
    Application.DisplayAlerts = True
End Sub

4. appuie sur le autre + Q touches simultanément pour fermer le Microsoft Visual Basic pour applications fenêtre.

5. Cliquez Déposez le > Enregistrer sous > DECOUVREZ. Voir la capture d'écran:

6. dans le Enregistrer sous boîte de dialogue, veuillez sélectionner un dossier pour enregistrer le fichier, nommez-le selon vos besoins dans la zone Nom du fichier, sélectionnez Cahier de travail Excel avec macro-activé du Enregistrer sous type liste déroulante, et enfin cliquez sur le Enregistrer bouton. Voir la capture d'écran:

Désormais, à chaque ouverture de ce classeur, un Kutools pour Excel la boîte de dialogue apparaîtra. Veuillez entrer l'heure à laquelle vous allez enregistrer et fermer le classeur en fonction de, puis cliquez sur le bouton OK .

Et le classeur sera enregistré et fermé automatiquement après ce temps d'inactivité spécifié. Voir la capture d'écran:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtrée...
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammes...
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellules...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (18)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Salut Merci charges pour ce code. Juste un problème. Il semble essayer de fermer tous les classeurs ouverts, ce qui bloque si la fermeture d'un autre classeur est annulée ou ne répond pas. avez-vous des retouches qui peuvent résoudre ce problème?
Henri
Ce commentaire a été minimisé par le modérateur sur le site
J'ai le même problème... J'ai essayé d'ouvrir un nouveau classeur et j'ai entré des données... le moment venu, les deux classeurs ont été fermés, mais le nouveau n'a pas été enregistré... Existe-t-il un moyen de répare ça?
En plus ça marche très bien !! Merci beaucoup!!
Gaston
Ce commentaire a été minimisé par le modérateur sur le site
Salut Gaston,
Le code a été mis à jour avec la résolution de problèmes. Veuillez essayer. Désolé pour le dérangement et merci pour votre commentaire.
cristal
Ce commentaire a été minimisé par le modérateur sur le site
Salut Henry,
Le code a été mis à jour avec la résolution de problèmes. Veuillez essayer. Désolé pour le dérangement et merci pour votre commentaire.
cristal
Ce commentaire a été minimisé par le modérateur sur le site
Cela ne fonctionne pas lorsque vous vous concentrez sur une cellule particulière d'une feuille. Le cas d'utilisation est lorsque l'utilisateur tape dans une cellule et laisse Excel ouvert avec le curseur à l'intérieur de la cellule.
VR
Ce commentaire a été minimisé par le modérateur sur le site
Avez-vous pu trouver une solution à cela par hasard?
Rehan
Ce commentaire a été minimisé par le modérateur sur le site
Je recommanderais d'identifier le classeur avec le nom du fichier de classeur. Cela permettrait aux utilisateurs d'avoir plusieurs classeurs ouverts et de fermer uniquement le classeur spécifique qui doit avoir le verrouillage de l'heure.

Suggestion : Définir xwb = Workbooks("<nom du fichier>")
au lieu de : Set xwb = ActiveWorkbook

Remplacez également toutes les références à "ActiveWorkbook" par Xwb dans le module

Super code sinon.
Mark
Ce commentaire a été minimisé par le modérateur sur le site
Salut Mark,
Merci pour le partage.
cristal
Ce commentaire a été minimisé par le modérateur sur le site
Salut Mark,

Merci d'avoir publié cet amendement - j'ai trouvé tant de codes pour fermer des classeurs inactifs, mais tous semblaient affecter celui que vous ne voulez pas fermer !

Je suis très nouveau dans VBA, donc je ne sais pas comment le code fonctionnerait pour remplacer le libellé "ActiveWorkbook" dans le module. J'ai essayé de remplacer le libellé par 'Xwb' mais cela ne change rien et je suis peut-être idiot. Pourriez-vous poster une copie du code s'il vous plaît?

Merci
Sammy
Ce commentaire a été minimisé par le modérateur sur le site
Existe-t-il un moyen de faire en sorte que cela fonctionne, même si vous n'êtes pas sur la feuille, comme si vous cliquiez sur une autre fenêtre, le minuteur fermerait toujours cette feuille? Il semble que je doive rester sur le fichier pour que cela fonctionne
robert
Ce commentaire a été minimisé par le modérateur sur le site
il demande du temps mort à chaque fois que j'ouvre.

Je veux que le temps ne soit pas affiché lors de l'ouverture du classeur. (si nécessaire, il peut être modifié dans VBA)
Nitin
Ce commentaire a été minimisé par le modérateur sur le site
Changer de ligne
xTime = Application.InputBox("Veuillez spécifier le temps d'inactivité :", "KuTool For Excel", "00:00:20", , , , , 2)


à

xHeure = "00:00:20"


ça va pas demander
Tarun
Ce commentaire a été minimisé par le modérateur sur le site
Existe-t-il un moyen de changer cela pour qu'il invite l'utilisateur à enregistrer/fermer le fichier, au lieu d'enregistrer et de fermer automatiquement le fichier ?
Garth
Ce commentaire a été minimisé par le modérateur sur le site
Salut. Je dois configurer ma feuille de calcul partagée sur le réseau du bureau pour qu'elle s'enregistre et se ferme automatiquement lorsque j'en ai terminé pour la journée. Seuls mon patron et moi sommes censés apporter et enregistrer des modifications, mais plusieurs gestionnaires le consultent quotidiennement.
Je dois pouvoir l'enregistrer automatiquement pour nous deux, sans l'enregistrer pour les autres utilisateurs. Est-ce possible? Puis-je configurer la macro pour qu'elle ne fonctionne que pour nous ? Ou cela affectera-t-il tout le monde ?
Je sais comment protéger la feuille, mais je ne peux pas le faire, car ils veulent pouvoir apporter des modifications temporaires de temps en temps. J'ai juste besoin de pouvoir restreindre l'enregistrement automatique à des utilisateurs spécifiques.
Andrew
Ce commentaire a été minimisé par le modérateur sur le site
(Soupir.)
Jetez un oeil au code.
Si vous mettez ce VBA dans Excel001.xlsm, mais que, lorsque le délai d'expiration se produit, vous avez Excel002.xlsm comme classeur "actif", il va en fait fermer CE fichier Excel, plutôt que celui dans lequel vous avez mis le VBA .
Michel
Ce commentaire a été minimisé par le modérateur sur le site
regardez ci-dessous, le commentaire de Mark : "Je recommanderais d'identifier le classeur avec le nom du fichier de classeur. Cela permettrait aux utilisateurs d'avoir plusieurs classeurs ouverts et de fermer uniquement le classeur spécifique qui doit avoir le verrouillage temporel.

Suggestion : Définir xwb = Workbooks("<nom du fichier>")
au lieu de : Set xwb = ActiveWorkbook

Remplacez également toutes les références à "ActiveWorkbook" par Xwb dans le module

Super code sinon."
Mike B
Ce commentaire a été minimisé par le modérateur sur le site
Salut monsieur, comment voir le compte à rebours?
Zakariya
Ce commentaire a été minimisé par le modérateur sur le site
Salut monsieur, comment voir le compte à rebours?
Zakariya
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0  Personnages
Emplacements suggérés