Bonsoir à tous,
J'utilise la macro de Ti concernant la fermeture automatique d'un fichier inactif depuis X minutes. Or je viens de m'aperçevoir que le fichier ne se ferme pas exactement au bout de X minutes. Je m'explique :
- Dans Thisworkbook, l'instruction de Ti est la suivante :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
ThisWorkbook.Names("Chrono").Value = 1
End Sub
-> Lorsqu'il y a un changement, la variable chrono prend la valeur de 1
- Dans un module : Ti a ajouté plusieurs programme dont notamment celui nommée "Programme" et "Interruption"
Sub Programmation()
Dim Heure As Date
Heure = Now + TimeValue("00:" & Delai & ":00")
'on sauvegarde l'heure de la dernière programmation pour éventuellement
'pouvoir la supprimer à la fermeture du fichier
ThisWorkbook.Names.Add Name:="ChronoTime", RefersTo:=Heure
ThisWorkbook.Names.Add Name:="Chrono", RefersTo:=0
Application.OnTime Heure, "Interruption"
End Sub
Private Sub Interruption()
With ThisWorkbook
If .Sheets(1).Evaluate("Chrono") = 0 Then
'.Save ( je fais pas de save, je close direct)
UserForm1.Show
'Application.DisplayAlerts = False
'Application.Quit
Else
Programmation
End If
End With
End Sub
Voici ce que j'ai remarqué, si la valeur d'inactivité est par exemple de 1min, théoriquement, 1 minute après la dernière modif, la macro "Interruption" devrait se lancer. Mais ce n'est pas la cas. Voici ce qui se passe réellement
20h20min30s : 1ere modif, la variable Chrono = 1
20h21min30s : proposition de fermeture,j'annule, Chrono=0
20h21min45s : derniere modif,chrono =1 théoriquement, la prochaine proposition de fermeture devrait avoir lieu à 20h22min45s mais ce n'est pas la cas, Excel continue jusqu'à 20h22min30 (exécution de application.ontime heure, interruption) puis comme Chrono = 1, on relance la macro Programmation qui mettra à 0 Chrono et donc la fermeture aura lieu à 20h23min30s et non à 20h22min45s.
J'ai tenté de remplacer dans thisworkbook la commande ThisWorkbook.Names("Chrono").Value = 1
par l'exécution direct de Programmation (comme ca, la variable Heure serait remise à jour immédiatement) mais ca ne marche pas.
Je vous joins le fichier original de Ti
Si quelqu'un a une idée pour que le fichier se referme exactement 1min après la derniere modif
A bientot !!!
seb
J'utilise la macro de Ti concernant la fermeture automatique d'un fichier inactif depuis X minutes. Or je viens de m'aperçevoir que le fichier ne se ferme pas exactement au bout de X minutes. Je m'explique :
- Dans Thisworkbook, l'instruction de Ti est la suivante :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
ThisWorkbook.Names("Chrono").Value = 1
End Sub
-> Lorsqu'il y a un changement, la variable chrono prend la valeur de 1
- Dans un module : Ti a ajouté plusieurs programme dont notamment celui nommée "Programme" et "Interruption"
Sub Programmation()
Dim Heure As Date
Heure = Now + TimeValue("00:" & Delai & ":00")
'on sauvegarde l'heure de la dernière programmation pour éventuellement
'pouvoir la supprimer à la fermeture du fichier
ThisWorkbook.Names.Add Name:="ChronoTime", RefersTo:=Heure
ThisWorkbook.Names.Add Name:="Chrono", RefersTo:=0
Application.OnTime Heure, "Interruption"
End Sub
Private Sub Interruption()
With ThisWorkbook
If .Sheets(1).Evaluate("Chrono") = 0 Then
'.Save ( je fais pas de save, je close direct)
UserForm1.Show
'Application.DisplayAlerts = False
'Application.Quit
Else
Programmation
End If
End With
End Sub
Voici ce que j'ai remarqué, si la valeur d'inactivité est par exemple de 1min, théoriquement, 1 minute après la dernière modif, la macro "Interruption" devrait se lancer. Mais ce n'est pas la cas. Voici ce qui se passe réellement
20h20min30s : 1ere modif, la variable Chrono = 1
20h21min30s : proposition de fermeture,j'annule, Chrono=0
20h21min45s : derniere modif,chrono =1 théoriquement, la prochaine proposition de fermeture devrait avoir lieu à 20h22min45s mais ce n'est pas la cas, Excel continue jusqu'à 20h22min30 (exécution de application.ontime heure, interruption) puis comme Chrono = 1, on relance la macro Programmation qui mettra à 0 Chrono et donc la fermeture aura lieu à 20h23min30s et non à 20h22min45s.
J'ai tenté de remplacer dans thisworkbook la commande ThisWorkbook.Names("Chrono").Value = 1
par l'exécution direct de Programmation (comme ca, la variable Heure serait remise à jour immédiatement) mais ca ne marche pas.
Je vous joins le fichier original de Ti
Si quelqu'un a une idée pour que le fichier se referme exactement 1min après la derniere modif
A bientot !!!
seb