Bonjour,

Dans un module standard, j'ai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public HeureAlerte
Option Private Module
Sub ProchaineAlerte()
    With ThisWorkbooks  
        HeureAlerte = Now + TimeValue("00:05:00")  'ajustement
        Application.OnTime HeureAlerte, "Fin"
    End With
End Sub
 
Sub fin()
Dim Répertoire As String, Fichier As String, FichierIndexé As String  
 
    Application.OnTime HeureAlerte, Procedure:="Fin", Schedule:=False
 
    réponse = MsgBox("Avez-vous fini d'utiliser ce Classeur ?" _
            & Chr(10) & Chr(10) & _
        "Si vous cliquez sur Non, une nouvelle alerte" _
            & Chr(10) & _
        "s'affichera dans 05 minutes...", vbYesNo + vbQuestion)
 
    If réponse = vbNo Then
        Call ProchaineAlerte
    Else
Plutôt que de laisser la main à l'utilisateur, je souhaite fermer le classeur si aucune action n'est détectée dans l'intervalle de temporisation.

J'ai donc ajouté ceci dans le module de Feuille :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call ProchaineAlerte
End Sub
... et ça ne fonctionne pas !

Après 5', la procédure "fin" s'exécute normalement jusqu'à :
réponse = MsgBox("Avez-vous fini d'utiliser ce Classeur ?")
... et si l'utilisateur clique sur "Non", la procédure "ProchaineAlerte" s'exécute pour relancer une tempo de 5'

Mais si "ProchaineAlerte" s'exécute à partir de :
Worksheet_SelectionChange
ça ne réinitialise pas le compteur.

Par ailleurs, mais cela doit peut-être faire l'objet d'un autre fil de discussion, est-il possible d'avoir un "décompte" dans la barre de tâche ?

En vous remerciant par avance pour votre aide,
Cdt