OVH Cloud OVH Cloud

Fermeture pour Inactivité d'un classeur

13 réponses
Avatar
daniel
Bonjour,
J'ai recherché dans les archives, mais je n'ai pas trouvé, ou plutôt j'ai
trouvé en février 2006, MichDenis joignait un classeur qui fermait
automatiquement un classeur après une inactivité de x minutes, mais le
fichier sur c.joint n'existe plus. Si quelqu'un l'a encore à disposition, je
l'en remercie à l'avance de sa mise à disposition. Ou alors de nouvelles
solutions.
Merci et bon week-end.

3 réponses

1 2
Avatar
JB
Bonjour,

Pour gérer le cas évoqué (fermeture annulée), il suffit de
supprimer le code de Workbook_BeforeClose():

http://cjoint.com/?lnjp3rOooN

Public tempsArret
Sub ProchainArret()
tempsArret = Now + TimeValue("00:00:30")
Application.OnTime tempsArret, "Fin"
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ThisWorkbook.Close True
End Sub

Private Sub Workbook_Open()
ProchainArret
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ProchainArret
End Sub

Cordialement JB


Bonjour,
Pas de soucis, juste des précisions à MichDenis qui s'est emporté u n peu....
mais dont je continuerai à suivre les conseils et messages.
Bon week-end.
"JB" a écrit dans le message de news:

Bonjour,

Il y a eu un malentendu concernant "N'utilise pas la fonction Timer()".
Il s'agissait de préciser que le pgm n'utilise pas la fontion Timer()
qui pose un pb lors de sa raz à minuit.

Cordialement JB




Bonjour,
après lecture, de votre échange, je vais suivre votre raisonnement (JB),
d'autant plus que je suis incapable de penser par moi-même (dixit
MichDenis,
pourtant il ne me semble pas que l'on se connaisse ????) ;-o.
et aussi "des procédures à toute épreuve pour permettre aux deman deurs de
les copier bêtement !", c'est pourquoi, des commentaires et explicati ons
avec les procédures sont les bienvenus par nous les ........., compl éter à
votre convenance.
Merci pour votre intérêt et votre disponibilité.

"JB" a écrit dans le message de news:

Bonjour,

N'utilise pas la fonction Timer(): http://cjoint.com/?lloBs3oVBy

Dans un Module:

Public tempsArret
Sub ProchainArret()
tempsArret = Now + TimeValue("00:00:30")
Application.OnTime tempsArret, "Fin"
Sheets(1).[A1] = tempsArret
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ActiveWorkbook.Close True
End Sub

Dans ThisWorkBook:

Private Sub Workbook_Open()
ProchainArret
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ProchainArret
End Sub

Cordialement JB

Bonjour,
J'ai recherché dans les archives, mais je n'ai pas trouvé, ou plu tôt
j'ai
trouvé en février 2006, MichDenis joignait un classeur qui fermait
automatiquement un classeur après une inactivité de x minutes, ma is le
fichier sur c.joint n'existe plus. Si quelqu'un l'a encore à
disposition,
je
l'en remercie à l'avance de sa mise à disposition. Ou alors de no uvelles
solutions.
Merci et bon week-end.






Avatar
MichDenis
Tu ouvres ton nouveau classeur,
Tu sélectionnes une nouvelle cellule
Tu fermes ton classeur et tu le rouvres
immédiatement

Tout à coup tu t'aperçois qu'il n'y a plus un délai de 30 secondes avant sa fermeture mais
le nombre de secondes restantes entre les 30 secondes de la première ouverture et le
temps que tu as pris pour exécuter les quelques commandes plus haut.

Tu écrivais dans un message précédent, sur ce même fil :

| -A la fermeture de ton pgm, ces procédures sont toujours actives en
| mémoire.
| -Si on ouvre un autre fichier immédiatement, les appels de procédures
| restées en mémoire sont déclenchées. Le programme est a nouveau
| chargé automatiquement.

J'ai plusieurs restrictions sur l'énoncé ci-haut quant à sa formulation mais,
c'est quand même étrange que tu suggères d'enlever la procédure de
Workbook_BeforeClose() plutôt que d'apprendre à la gérer pour que
la méthode "OnTime" de l'objet "application" puisse se terminer
proprement ........!!!

Chacun ses choix.

Ceci est ma dernière intervention sur ce fil !



"JB" a écrit dans le message de news:

Bonjour,

Pour gérer le cas évoqué (fermeture annulée), il suffit de
supprimer le code de Workbook_BeforeClose():

http://cjoint.com/?lnjp3rOooN

Public tempsArret
Sub ProchainArret()
tempsArret = Now + TimeValue("00:00:30")
Application.OnTime tempsArret, "Fin"
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ThisWorkbook.Close True
End Sub

Private Sub Workbook_Open()
ProchainArret
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ProchainArret
End Sub

Cordialement JB


Bonjour,
Pas de soucis, juste des précisions à MichDenis qui s'est emporté un peu....
mais dont je continuerai à suivre les conseils et messages.
Bon week-end.
"JB" a écrit dans le message de news:

Bonjour,

Il y a eu un malentendu concernant "N'utilise pas la fonction Timer()".
Il s'agissait de préciser que le pgm n'utilise pas la fontion Timer()
qui pose un pb lors de sa raz à minuit.

Cordialement JB




Bonjour,
après lecture, de votre échange, je vais suivre votre raisonnement (JB),
d'autant plus que je suis incapable de penser par moi-même (dixit
MichDenis,
pourtant il ne me semble pas que l'on se connaisse ????) ;-o.
et aussi "des procédures à toute épreuve pour permettre aux demandeurs de
les copier bêtement !", c'est pourquoi, des commentaires et explications
avec les procédures sont les bienvenus par nous les ........., compléter à
votre convenance.
Merci pour votre intérêt et votre disponibilité.

"JB" a écrit dans le message de news:

Bonjour,

N'utilise pas la fonction Timer(): http://cjoint.com/?lloBs3oVBy

Dans un Module:

Public tempsArret
Sub ProchainArret()
tempsArret = Now + TimeValue("00:00:30")
Application.OnTime tempsArret, "Fin"
Sheets(1).[A1] = tempsArret
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ActiveWorkbook.Close True
End Sub

Dans ThisWorkBook:

Private Sub Workbook_Open()
ProchainArret
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ProchainArret
End Sub

Cordialement JB

Bonjour,
J'ai recherché dans les archives, mais je n'ai pas trouvé, ou plutôt
j'ai
trouvé en février 2006, MichDenis joignait un classeur qui fermait
automatiquement un classeur après une inactivité de x minutes, mais le
fichier sur c.joint n'existe plus. Si quelqu'un l'a encore à
disposition,
je
l'en remercie à l'avance de sa mise à disposition. Ou alors de nouvelles
solutions.
Merci et bon week-end.






Avatar
JB
Bonjour,

Version 1 aménagée (ajout de ThisWorkBook.Save dans WorkBook_Close())

http://cjoint.com/?lohvaPL1CZ

Public HeureArrêt
Sub ProchainArret()
HeureArrêt = Now + TimeValue("00:01:00")
Application.OnTime HeureArrêt, "Fin"
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime HeureArrêt, Procedure:="Fin", Schedule:úlse
' annule événnement
ThisWorkbook.Close True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
On Error Resume Next
Application.OnTime HeureArrêt, Procedure:="Fin", Schedule:úlse
ProchainArret
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save
On Error Resume Next
Application.OnTime HeureArrêt, Procedure:="Fin", Schedule:úlse '
annule événnement
End Sub

Cordialement JB






Bonjour,
Pas de soucis, juste des précisions à MichDenis qui s'est emporté u n peu....
mais dont je continuerai à suivre les conseils et messages.
Bon week-end.
"JB" a écrit dans le message de news:

Bonjour,

Il y a eu un malentendu concernant "N'utilise pas la fonction Timer()".
Il s'agissait de préciser que le pgm n'utilise pas la fontion Timer()
qui pose un pb lors de sa raz à minuit.

Cordialement JB




Bonjour,
après lecture, de votre échange, je vais suivre votre raisonnement (JB),
d'autant plus que je suis incapable de penser par moi-même (dixit
MichDenis,
pourtant il ne me semble pas que l'on se connaisse ????) ;-o.
et aussi "des procédures à toute épreuve pour permettre aux deman deurs de
les copier bêtement !", c'est pourquoi, des commentaires et explicati ons
avec les procédures sont les bienvenus par nous les ........., compl éter à
votre convenance.
Merci pour votre intérêt et votre disponibilité.

"JB" a écrit dans le message de news:

Bonjour,

N'utilise pas la fonction Timer(): http://cjoint.com/?lloBs3oVBy

Dans un Module:

Public tempsArret
Sub ProchainArret()
tempsArret = Now + TimeValue("00:00:30")
Application.OnTime tempsArret, "Fin"
Sheets(1).[A1] = tempsArret
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ActiveWorkbook.Close True
End Sub

Dans ThisWorkBook:

Private Sub Workbook_Open()
ProchainArret
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
On Error Resume Next
Application.OnTime tempsArret, Procedure:="Fin", Schedule:úlse
ProchainArret
End Sub

Cordialement JB

Bonjour,
J'ai recherché dans les archives, mais je n'ai pas trouvé, ou plu tôt
j'ai
trouvé en février 2006, MichDenis joignait un classeur qui fermait
automatiquement un classeur après une inactivité de x minutes, ma is le
fichier sur c.joint n'existe plus. Si quelqu'un l'a encore à
disposition,
je
l'en remercie à l'avance de sa mise à disposition. Ou alors de no uvelles
solutions.
Merci et bon week-end.






1 2