Fermer un classeur après un délai d'inactivité

Bonjour à tous,

je me permets de remonter ce sujet:
"Fermer un classeur après un délai d’inactivité (excel-pratique.com)" car cette programmation me serait bien utile également.

Malheureusement, lorsque j'arrive sur la partie "Fermeture" une erreur s'affiche.
image "This WorkBook" n'est pas reconnu.
image
Si quelqu'un peut m'aider?
Merci

Bonjour,

ci-dessous exemple de code à insérer dans ThisWorkBook

Dim timer As Date

Private Sub Workbook_Open()
    inactivité
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    inactivité
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    inactivité
End Sub

Private Sub inactivité()

    If timer <> Empty Then Application.OnTime timer, "ThisWorkbook.fermeture", , False
    timer = Now + TimeValue("00:10:00") 'délai inactivité de 10 minutes
    Application.OnTime timer, "ThisWorkbook.fermeture"

End Sub

Public Sub fermeture()

    With ThisWorkbook
        .Save
        .Close
    End With

End Sub

Salut Thev,

Merci pour ton retour.

IL faut tout mettre dans ThisWorkBook?

Je pensais qu'il fallait créer un module avec le code "Inactivité" et "Fermeture" puis dans ThisWorkBook appeler le code "Inactivité" et "Fermeture" suivant l'activation d'une feuille, l'ouverture du fichier, ...

IL faut tout mettre dans ThisWorkBook?
Oui car c'est le plus simple.

Thev,

Merci j'essaie cela.

Bonne journée.

J'ai toujours le même message d'erreur…

Bonjour à toutes et tous, delga, thev,

@delga n'oublie pas d'enlever ton ancien code dans le module et dans ThisWorkBook.

Ceci pourrait expliquer que tu as toujours un message d'erreur.

Cordialement.

Salut mdo 100,

J'ai supprimé le module de base pour tout mettre dans this workbook.

Je regarde malgré tout pour voir là où je pourrais pécher.

Merci

Et bien rien n'y fait cela ne fonctionne pas…

Merci quand même pour votre aide.

Re delga,

Un p'tit fichier avec le code VBA de @thev,

Et un autre avec une partie dans un module et l'autre dans ThisWorkBook

Les 2 sont réglés sur 15 secondes.

Cdlt.

Bonjour mdo 100,

je me permet de rebondir sur ce poste car cette macro m'a bien intéressé et je l'ai testé :

tout fonctionne correctement mais seul petit bémol : lorsque le fichier se ferme, une page Excel (vierge) reste active.

bug ou bout de code manquant?

cordialement.

Bonjour Nico68,

Non ce n'ai pas un bug, cette page Excel (vierge) reste, ce qui oblige à la fermer manuellement.

A mon humble connaissance, il n'y a pas moyen de faire autrement.

Cdlt.

Merci à vous je regarde çà.

J'espère y arriver!

merci pour votre réponse.

J'ai testé en ouvrant un autre fichier et le "problème" n'apparait plus.

du coup ce n'est pas si dérangeant en soit.

Cdlt.

Me revoilà,

le code fonctionne, est là, il n' y avait pas de doute.

Par contre j'ai un souci.

Sur mon fichier, j'ai 14 feuilles et lors de la fermeture automatique, le fichier se ferme et s'ouvre 14 fois avant de fermer pour de bon.

Dans ce fichier, j'ai une page d'acceuil avec un user et un mot de passe et, suivant ce qui est renseigné, tout ou parti des feuilles restantes s'affichent.

1er cas je suis sur la page d'acceuil, 1 page ouverte donc le code fonctionne sans souci.

2ème cas, quand j'ouvre avec le user et mot de passe admin toutes les feuilles s'affichent et là j'en arrive à ce que j'expose plus haut à savoir 14 "fermetures/ ouvertures" du fichier.

Sacré histoire que le vba.

@Nico68

tout fonctionne correctement mais seul petit bémol : lorsque le fichier se ferme, une page Excel (vierge) reste active.

bug ou bout de code manquant?

La page Excel vierge correspond à l"application Excel qui reste active même si aucun classeur n'y est ouvert. Vous pouvez choisir de fermer l"application sous réserve qu'il n'y ait pas autres classeurs qui y soient éventuellement ouverts. Ci-dessous code :

Public Sub fermeture()

    ThisWorkbook.Save
    If Workbooks.Count = 1 Then Application.Quit _
    Else ThisWorkbook.Close

End Sub

Bonjour thev,

J'ai testé votre code mais il me met une erreur "else sans if"...

une idée du soucis?

merci d'avance

J'ai testé votre code mais il me met une erreur "else sans if"...

Vous avez dû oublier le caractère de continuation " _" après Application.Quit

Hello thev,

Merci pour ce bout de code supplémentaire.

Ça fonctionne très bien chez moi.

Cordialement.

je modifie ça et je reviens vers vous.

En attendant, merci pour la réponse.

Rechercher des sujets similaires à "fermer classeur delai inactivite"