Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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.

10 réponses

1 2
Avatar
MichDenis
http://cjoint.com/?llmggP7DZE



"daniel" a écrit dans le message de news:
%
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
daniel
bonjour,
réponse expéditive, mais efficace...
merci beaucoup pour le fichier qui est vraiment top...
je viens de regarder les codes, je vais essayer de tout comprendre.
Encore merci et bon week-end.
Daniel
Avatar
JB
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 à dispositio n, je
l'en remercie à l'avance de sa mise à disposition. Ou alors de nouvel les
solutions.
Merci et bon week-end.


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

C'est bien de donner des ordres à ceux et celles incapables de penser par eux-mêmes ... ;-))

Mais c'est encore mieux de créer des procédures qui fonctionnent !!!

OnTimeFermeInactif.xls a un gros bug ...

Si tu annules la fermeture du classeur, tu désactives la procédure et quand le classeur se
fermera-t-il ?

Bon c'est vrai, tu ne peux pas penser à tout.......................!!!!!!!!!!!!!!!!!!!!!
;-)))))))))))))))))
Avatar
JB
-J'ai simplement mentionné que le pgm n'utilise pas la fonction
Timer() (pb du passage de minuit)

-Dans ton programme, à chaque clic, tu actives la procédure fermer
FermerLeClasseur sans les remettre à 0 avec Application.OnTime
tempsArret, Procedure:="FermerLeClasseur", Schedule:úlse

-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.

JB

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

C'est bien de donner des ordres à ceux et celles incapables de penser p ar eux-mêmes ... ;-))

Mais c'est encore mieux de créer des procédures qui fonctionnent !!!

OnTimeFermeInactif.xls a un gros bug ...

Si tu annules la fermeture du classeur, tu désactives la procédure et quand le classeur se
fermera-t-il ?

Bon c'est vrai, tu ne peux pas penser à tout.......................!!!! !!!!!!!!!!!!!!!!!
;-)))))))))))))))))


Avatar
MichDenis
| -Dans ton programme, à chaque clic, tu actives la procédure fermer
| FermerLeClasseur

Cette affirmation est fausse

| -A la fermeture de ton pgm, ces procédures sont toujours actives en
| mémoire.

Cette affirmation est fausse si le programme se ferme tout seul après le
délai que l'usager a prévu dans le programme est expiré.

Par ailleurs, il est vrai que le classeur ne contient aucune procédure
pour arrêter proprement la méthode OnTime de l'objet Application si
l'usager décide de fermer le classeur avant l'expiration du délai. Mais
cet élément ne faisait pas parti explicitement de la problématique auquel
ce fichier exemple répondait au moment où il fut créé. Je ne suis pas
payé par Microsoft pour créer et tester des procédures à toute épreuve
pour permettre aux demandeurs de les copier bêtement ! D'aileurs, ce
n'est pas le rôle de ce forum........!!!!!!!!!!

| -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.

Ce qui précède est faux s'il s'agit d'un classeur autre que le classeur
contenant la procédure...

Je suis ouvert aux commentaires, encore faut-il qu'ils soient sérieux et écrits
avec discernement.
Avatar
daniel
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,

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 (J B),
d'autant plus que je suis incapable de penser par moi-même (dixit MichD enis,
pourtant il ne me semble pas que l'on se connaisse ????) ;-o.
et aussi "des procédures à toute épreuve pour permettre aux demande urs 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 à disposit ion,
je
l'en remercie à l'avance de sa mise à disposition. Ou alors de nouv elles
solutions.
Merci et bon week-end.




Avatar
daniel
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
MichDenis
| d'autant plus que je suis incapable de penser par moi-même

Si le chapeau te fait, tu peux te l'enfoncer jusqu'aux oreilles...
mais je n'ai jamais traité un questionneur d'imbécile et les habitués
de ce forum en ont vu passer de toutes les couleurs !!!

| 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.

Ce n'est pas parce qu'il y a des commentaires que cela exempte le code
du fichier de bugs, d'omissions, d'un copier-coller erratique ....n'oublie
pas que bon nombre d'exemples de code présentés sur ce forum sont écrits
par les répondeurs à la bourre !!!

http://cjoint.com/?lmu2D1YXxE

Que tu choisisses un ou l'autre des exemples sur ce fil, c'est le dernier de mes
soucis...mais les 2 fichiers jusqu'à preuve de contraire requiert une procédure
semblable à celle du fichier soumis que tu joins au ThisWorkbook du classeur :
'--------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub
'--------------------------

Comme tu as choisi le fichier de JB, Ouvre le fichier et ferme le par
le X du coin supérieur droit après avoir modifié le contenu d'une cellule
... lorsque la fenêtre te demandera si tu désires sauvegarder les
modifications faites au dossier, sélectionne le bouton annuler ....
Maintenant, calcule le temps que ce fichier prendra pour se fermer tout seul !!!

Ce n'est pas parce que tu ne vois pas le ou les bugs, qu'il n'y en a pas !
Et ceci, ce n'est qu'un exemple parmi tant d'autres nonobstant l'intervenant
qui écrit le code... C'est ta responsabilité de tester à fond ton application et
non celle du répondeur.
1 2