Code VBA pour stopper une fermeture automatique

Bonjour,

Dans le fil ci-dessous j'ai trouvé un code génial de Bretagne35 qui permet de fermer automatiquement un fichier - s'il n'est plus utilisé - au bout d'un certain temps https://forum.excel-pratique.com/post86618.html#p86614.

Ce code répondrait exactement à mon attente si on pouvait y ajouter une, voire deux petites modifications :

1) Serait-il en effet possible qu'un message apparaisse avant que le fichier soit réellement fermé, de manière à ce que son utilisateur, s'il travaille toujours dessus, puisse refuser cette fermeture ; quelque chose du genre : "Si vous avez encore besoin de ce fichier, cliquez sur <NE PAS FERMER> autrement ce fichier se fermera d'ici 15 secondes".

2) De plus j'ai remarqué que si quelqu'un ouvre ce fichier mais n'y apporte aucune modification, le code commandant la fermeture ne s'enclenche pas. Peut-on y remédier ?

Pour vous faciliter la tâche, je joins un fichier avec le code de Bretagne35.

Au plaisir de vous relire.

Edit d'Yvouille

Je viens de me rendre compte que Bretagne35 avait en fait placé deux codes à deux endroits différents et qu'en modifiant également le deuxième code de 5 minutes à 10 secondes, celui-ci se ferme comme désiré, même si on ouvre ce fichier sans rien y modifier. LE POINT DEUX NOTE CI-DESSUS EST DONC RESOLU.

Ci-joint le fichier ainsi modifié.

Il ne resterait donc plus que le point 1 à résoudre, MAIS ALORS MAINTENANT POUR LES DEUX CODES !!

Bonjour,

J'avais fait quelque chose en son temps qui se trouve sur ce forum mais je n'arrive pas à le retrouver...je cherche

Ton fichier est au format 2007 donc pas possible de le voir pour moi

Amicalement

Dan

Edit Dan :

Vois le fichier "Chrono-temps" ci-joint dans lequel j'ai placé deux macros qui te permettent de répondre à ta demande.

  • une macro dans Thisworbook pour appeler la macro "Temp" qui se trouve dans un module
  • une macro "message" dans un module qui te permet ou non de confirmer la fermeture de ton fichier.

Par défaut, le code te renverra le message de confirmation au bout de 5 secondes.

Si tu cliques sur Oui, le fichier ne se fermera pas.

Si tu cliques sur Non, le fichier se fermera un temps (15 sec ici) après et les modifications seront enregistrées.

Amicalement

Dan

207chrono-temps.zip (9.77 Ko)

Salut Dan,

Merci pour ta réponse.

J'ai constaté qu'avec ton code, si la personne indique une fois qu'elle a encore besoin de ce fichier, le code ne s'active plus une seconde fois. De plus, si personne ne répond aux questions Oui-Non, le ficher reste également ouvert.

Mais ce serait plus intéressant que la question posée ne propose qu'une seule réponse - comme indiqué dans mon premier message - du genre "Si vous avez encore besoin de ce fichier, cliquez sur <NE PAS FERMER> autrement ce fichier se fermera d'ici 15 secondes" [ou eventuellement une deuxième possibilité de réponse <ENREGISTRER LES MODIFICATIONS ET FERMER MAINTENANT> ] et que les prochaines fois que ce fichier n'est plus utilisé pendant un certain laps de temps, la même question soit à nouveau posée et que le fichier se ferme automatiquement si personne n'y répond.

Chez nous, certaines personnes vont boire le café en oubliant de fermer un fichier commun et bloque leur ordinateur pendant ce temps !!!! Tu comprends alors la raison de ma demande ?

Je joins une nouvelle version xls. de mon premier fichier à tout hasard.

Bonnes salutations.

Bonjour

regarde si sa convient tu as une fermeture auto aprés 5 minutes d'inactivité sur le classeur avec un message avant fermeture

J'ai supprimer le fichier que j'avais mis car Dan travaille dessus et il as raisons de le faire savoir excuse moi encore Dan

re,

J'étais en train de travailler là dessus...

Bretagne, pourquoi verrouiller ton projet ?? Personne ne peut voir le code là

Dan ?

Bonsoir

Excuse moi d'avoir posté si tu es déjà sur le sujet

Cordialement

Salut Dan, Salut Bretagne,

Merci de vous être intéressés à mon problème. Puis-je vous demander si l'un de vous à une solution en vue ?

Bonne fin de journée.

Re,

Oups, perdu ce fil de vue et ayant vu le fichier de Bretagne, j'attendais ta réponse.

J'ai supprimer le fichier que j'avais mis car Dan travaille dessus et il as raisons de le faire savoir excuse moi encore Dan

Bretagne35, pourquoi avoir enlevé ton fichier qui, s'il fonctionne, peut servir à Yvouille.

Dan

Bonjour

J'ai enlevé le fichier car étant donner que tu travaillé dessus je ne voulais pas etre en doublons avec toi et respecter ton travail.

Bon alors je le remet:

Fichier de Fermeture automatique à 5mn par le contrôle d'inactivité du clavier où de la souris !!

Il faut laisser la feuille 1 en masquer car le compteur est en ligne 200

Voila

Je tiens aussi à précisser que cette VBA n'ai pas entièrement de moi elle contient des parties de VBA prisent ici et là, que j'ai arrangé

Cordialement

Salut Dan,

Merci beaucoup pour ton message à Bretagne en ma faveur.

Salut Bretagne,

Je te rermercie d'avoir remis ton fichier sur le fil. J'ai regardé en vitesse ta proposition et la trouve très intéressante. Je n'ai pas le temps de faire des essais afin d'utiliser ton système sur mon propre fichier dans l'immédiat, mais je te "redirai quoi" dans le courant de la semaine prochaine (je fois faire ces essais au travail).

Tu indiques que tu as piqué des bouts de code ici et là ; je pense que le 98 % des utilisateurs de ce forum le font également C'est vrai par contre que c'est sympa de citer ses sources lorsque c'est possible (comme je l'avais fait en début de ce fil).

Encore une fois merci à tous et à la semaine prochaine.

Bonnes salutations.

Bonjour à tous.

Effectivement, j'ai bien aussi citer les sources mais la je suis dans l'impossibilité car il y en as une multitude de un peu partout.

Cordialement

Salut Bretagne,

J'ai fait quelques essais et aurait quelques questions à te poser, si tu es toujours décidé à m'aider.

1) Est-ce que ton code fonctionne indifféremment selon que la feuille sur laquelle se trouve le compteur soit masquée ou non ?

2) Quels paramètres doivent être changés afin de modifier le temps d'attente a) jusqu'à ce que le message apparaisse et b) jusqu'à ce que le fichier se ferme ? Avec un réglage à 5 minutes ça va long entre deux essais ! Donc est-ce que ces deux paramètres peuvent être définis séparément ? Si non, c'est peu important.

3) Afin d'utiliser ton montage dans un autre dossier, il suffit d'y placer la feuille sur laquelle il y a le compteur, le code sous ThisWoorkbook, le code sous module 1 et la UserForm sous Feuilles. n'est-ce pas ?

4) Comment modifier le texte de la UserForm ? Lorsque je clique sur UserForm1, je la vois pendant quelques secondes, mais je n'ai pas le temps de modifier quoi que ce soit avant qu'elle disparaisse !

5) Est-ce bien prévu qu'à chaque fois qu'on passe par ce fichier - même sans rien y modifier, juste en faisant Alt+Tab pour choisir diverses fenêtres ouvertes - le compteur soit remis au départ ?

6) En fait dans mes divers essais je n'ai jamais vu la UserForm affichée lorsque le premier temps d'attente arrive à échéance. Par contre certaines fois il me semble que le fichier est comme fermé, puis rouvert, puis refermé, etc. avant d'être fermé définitivement sans que le message ne soit jamais apparu à l'écran. As-tu déjà vu un tel phénomène ?

7) Tes nouveaux codes sont bien différents de ceux que tu avais placé dans le fichier que j'avais récupéré et joins comme exemple à mon tout premier message sur ce fil ? Y avait-il une raison bien précise que tu n'ai pas utilisé ce fichier pour ton nouveau montage ?

J'espère ne pas exagérer avec mon flux de questions et te présente mes meilleures salutations.

Bonjour à tous.

Voici quelques réponses à tes questions.

1) Est-ce que ton code fonctionne indifféremment selon que la feuille sur laquelle se trouve le compteur soit masquée ou non ?

Oui car il fonction sur Le timer qui est sur le Workbook et non sur l'onglet (ou feuille)

2) Quels paramètres doivent être changés afin de modifier le temps d'attente a) jusqu'à ce que le message apparaisse et b) jusqu'à ce que le fichier se ferme ? Avec un réglage à 5 minutes ça va long entre deux essais ! Donc est-ce que ces deux paramètres peuvent être définis séparément ? Si non, c'est peu important.

Pour le changement c'est ici

yaLastDate = Now + TimeSerial(0, 5, 0) à la place du 5 du met 1 c'est le mini

3) Afin d'utiliser ton montage dans un autre dossier, il suffit d'y placer la feuille sur laquelle il y a le compteur, le code sous ThisWoorkbook, le code sous module 1 et la UserForm sous Feuilles. n'est-ce pas ?

Oui il faut le retranscrire dans ton dossier d'utilisation et de l'adapter à tes besoin, le plus simple étant de joindre un fichier lors des demandes!!!!!!

4) Comment modifier le texte de la UserForm ? Lorsque je clique sur UserForm1, je la vois pendant quelques secondes, mais je n'ai pas le temps de modifier quoi que ce soit avant qu'elle disparaisse !

Tous simplement en la modifiant par la vba mais attention tu as le timer qui lui est "ON" alors que tu n'as pas d'action sur les onglets il vas au bout des 5 minutes passer en "OFF"

5) Est-ce bien prévu qu'à chaque fois qu'on passe par ce fichier - même sans rien y modifier, juste en faisant Alt+Tab pour choisir diverses fenêtres ouvertes - le compteur soit remis au départ ?

Le timer agit comme du peut le voir dans la VBA sur un contrôle d'activité sur la souris et le clavier donc si il y as une action sur l'un de ces 2 points il y as une demande de recalcule de fermeture.

6) En fait dans mes divers essais je n'ai jamais vu la UserForm affichée lorsque le premier temps d'attente arrive à échéance. Par contre certaines fois il me semble que le fichier est comme fermé, puis rouvert, puis refermé, etc. avant d'être fermé définitivement sans que le message ne soit jamais apparu à l'écran. As-tu déjà vu un tel phénomène ?

Pour ma part cela à toujours été ok avec l'ensemble des tests!

7) Tes nouveaux codes sont bien différents de ceux que tu avais placé dans le fichier que j'avais récupéré et joins comme exemple à mon tout premier message sur ce fil ? Y avait-il une raison bien précise que tu n'ai pas utilisé ce fichier pour ton nouveau montage ?

Oui car effectivement si tu regardes bien ta demande n'as rien à voir avec le code que tu as récupérais, ou la tu avais une fermeture automatique au bout de 5minutes, c'est a dire 1 ordre Simple une VBA simple

Là ce n'est pas le cas!

Avons nous un activité sur notre fichier ouvert, si oui de quelle nature est-elle sur les onglets ou sur la VBA, comme est-elle réaliser si c'est sur les onglets avec la souris ou le clavier, oui j'ai un activité sur les onglets alors je recalcule ma fermeture auto, non je n'ai pas d'activité alors je lance un compte à rebours, 25 seconde avant la fermeture je lance une msgbox d'avertissement de fermeture

Alors comme tu le vois cela n'as rien à voir avec le petit code de fermeture auto.

En espérant avoir répondu à tes attentes

Cordialement Bretagne35

Salut Bretagne35,

Merci infiniment pour toutes ces réponses ; j'avais tellement de questions que j'en ai encore un peu honte

Je vais faire des essais et te redirai d'ici quelques temps comment je m'en sors.

Bonnes salutations.

Bonsoir le forum et Yvouille

Il ne faut surtout avoir honte de poser des questions bien au contraite, cela signifie que tu t'intéresses de près a ton sujet et que tu ne te contentes pas de faire du copier coller.

Bretagne 35

Salut Bretagne35,

J'ai essayé de transférer les codes et autres données de ton fichier dans l'un des miens, mais je n'y suis pas arrivé. Par exemple je ne peux pas simplement copier ta UserForm et la coller dans mon fichier.

Comme tu me le suggères, je te fournis aussi l'un des fichiers dans lequel j'aimerais avoir une fermeture automatique. Pourrais-tu m'y installer les codes et autres données nécessaires ?

Par rapport à ton exemple, ne serait-il pas possible d'avoir un compteur qui, lorsqu'il est visible à l'écran, indique également les minutes ? J'ai essayé de modifier le temps pendant lequel la UserForm serait visible, mais au dessus de 1 minute, ça n'indique pas le temps correctement.

Je ne suis toujours pas arrivé à modifier cette UserForm. Pourquoi lorsque je clique sur UserForm1 ci-dessous, je la vois quelques secondes (le texte dans la barre en dessus clignote alors bizarrement) puis cette fenêtre se referme avant que j'ai le temps de modifier le texte, la couleur ou quoi que ce soit d'autres ?

essai vbaproject

A te relire. Bonne soirée.

bonjour

Regarde si c'est ce que tu recherches, par pour userform tu cherches quoi?

Cordialement

Salut Bretagne35,

Merci une fois de plus pour ta réponse. Le fichier que tu m'as fourni est déjà une très très grande aide.

J'aurais voulu pouvoir modifier moi-même le texte de la UserForm car parfois je dois l'utiliser avec un texte en allemand. Mais lorsque je suis dans VisualBasic et que je clique sur UserForm, celle-ci apparaît quelques secondes seulement et je n'ai pas le temps d'essayer de la modifier. J'essaie de comprendre comment je pourrais faire cela moi-même.

De plus je vais devoir présenter ce projet à des collègues et je voulais déjà préparer une réponse si quelqu'un me demande si ne on pourrait pas plutôt indiquer un message pour un temps plus long, du genre "Fermeture dans 2 minute(s) et 30 secondes".

Bonne journée.

Rechercher des sujets similaires à "code vba stopper fermeture automatique"