Difficultés avec .OnTime

Philippe

XLDnaute Occasionnel
Bonsoir à tous,

Je voudrai que mon classeur soit sauvegardé après 10 secondes d'inutilisation,
pour celà je fais:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnTime Now + TimeValue("00:00:10"), "liberer", , True
End sub

(la procédure "liberer" correspond à un Thisworkbook.save)

seulement voilà, à chaque modification la procédure est lancée et le classeur se sauvegarde de multiples fois.
Je pensais résoudre le problème ainsi:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next
Application.OnTime Now + TimeValue("00:00:10"), "liberer", , False '<--- ici on DEVRAIT désactiver la procédure précédente
On Error GoTo 0
Application.OnTime Now + TimeValue("00:00:10"), "liberer", , True '<--- Et ici on en lance une nouvelle
End Sub

Mais celà ne fonctionne pas...
Comment puis-je faire donc pour que la sauvegarde "automatique" ne se déclenche qu'après 10 secondes d'inactivité depuis le DERNIERE modif. ?

Merci d'avance pour vos ingénieux conseils.

A+
Philippe
 

Pierrot93

XLDnaute Barbatruc
Re : Difficultés avec .OnTime

Bonjour Philippe

essaye peut être de mettre ta procédure dans l'événement "change", plutôt que "sélectionchange", mais bon, perso j'évite cette methode "ontime", couteuse en ressources et difficilement maitrisable, enfin pour moi...

bonne soirée
@+
 

Staple1600

XLDnaute Barbatruc
Re : Difficultés avec .OnTime

Bonsoir


Il existe une macro complémentaire nommée:
Enregistrement automatique
(voir dans Outils/Macros complémentaires)
qui permet de programmer une sauvegarde automatique.

Il faut la cocher pour l'activer.

Ensuite suivre les indications pour programmer la sauvegarde.

(PS: infos pour XL2000
au dessus je ne sais pas ce qu'il en est)
 

MJ13

XLDnaute Barbatruc
Re : Difficultés avec .OnTime

Bonjour à tous,

On time, je l'ai utilisé il n'y a pas logntemps au travail, car l'utilisation me semblait intéressante. J'ai trouvé une exemple de chez Microsoft ou on pouvait le désactiver.
Essaie de faire une recherche sur le web en mettant "on time" + microsoft.
A suivre!
 

JCGL

XLDnaute Barbatruc
Re : Difficultés avec .OnTime

Bonjour à tous,
Salut Pierrot,
Salut Staple,
Salut JP,

JP : Tu peux éviter la confirmation de sauvegarde en cochant la case qui va bien

Tout comme Pierrot, je me méfie du OnTime

Philippe : une sauvegarde toutes les 10 secondes ouarf tu bosses pour la CIA (avec plein d'humour en espérant que tu en aies autant que Pierrot, Staple et surtout mon ami JP)

A+
 

Philippe

XLDnaute Occasionnel
Re : Difficultés avec .OnTime

Bonsoir à tous,

Salut JCGL, pas de problème pour l'humour !

En fait chers amis, je veux qu'en cas d'inactivité le fichier soit fermé et sauvegardé, car je bosse toujours sur la gestion de 10 agendas en réseau et afin d'éviter les modifs. contradictoires, j'ai mis sur le serveur un petit fichier qui est flaggé et déflagé pour chaque agenda à l'ouverture/fermeture. Ainsi si un utilisateur travaille sur un agenda, un autre utilisateur qui voudrait l'ouvrir reçoit un message d'attente. Mais si un des utilisateurs "s'endort" sur l'agenda ouvert, il bloque tout le monde sur cet agenda...
D'où le fermeture "automatique" au bout de 10 sec. (... bon, d'accord pour 20 ou 30 c'est pareil) d'inactivité dans l'agenda.
Pour le reste des questions abordées, pour jeanpierre: pas de problème, displayalerts= false règle le problème de la demande de confirmation, ah bon, on n'est pas en VBA ? j'aurais pourtant juré !

Donc si Qqun a une idée pour la question initiale, çà m'aiderait bien.

A+ Philippe
 

JCGL

XLDnaute Barbatruc
Re : Difficultés avec .OnTime

Re,

OK donc fichier partagé sur serveur.

Si fichier utilisé == > Notification en lecture seule et droit à Enregistrement une fois que le fichier est libéré pour les "autres". (Merci de confirmer que c'est bien le cas ...)

Donc si tu enregistres après 10 secondes d'inactivité POUR UN USER qu'advient il des autres qui sont en train de bosser sur le fichier (en termes de sauvegardes qui à la prédominance ?)

Ou bien je n'ai pas tout compris, ce qui tout à fait possible arf

Au plaisir de te lire
 

Philippe

XLDnaute Occasionnel
Re : Difficultés avec .OnTime

Rebonsoir JCGL,

Non, les agendas ne sont par partagés et lors de l'ouverture d'un agenda, son nom est flaggé sur le petit fichier, comme lors d'une requète d'ouverture, le prog. vérifie d'abord si le fichier est flaggé (donc en cours d'utilisation), si User1 est en train de bosser sur l'agenda et que User2 veut l'ouvrir, User2 reçoit un message d'attente, quand user 1 a fini, il ferme l'agenda, le pt fichier est alors déflaggé pour cet agenda et les autres users peuvent s'y connecter (enfin le premier arrivé bien entendu, parce que dès qu'il est réouvert çà "reflaggue") Ceci permet d'éviter totalement toutes modifications contradictoires. Mais comme je te le disais plus haut, si l'un des users omet de confirmer qu'il en a fini avec cat agenda, il reste ouvert sur son poste, donc flaggué sur le petit fichier et personne ne peut plus accèder à cet agenda. C'est pour celà que je veux que l'agenda soit automatiquement fermé (et donc le petit fichier déflagué) au bout d'un certain temps d'inactivité... En fait ce que je voudrais savoir c'est comment annuler une procédure lancèe par .ontime lorsque j'en déclenche une autre lors d' une modif. de sélection....

En clair comment faire pour déclencher qqe chose 10 secondes après la DERNIERE modif. de sélection et pas 10 secondes après CHAQUE modif. de sélection... Ce qui dans mon cas aboutit à des sauvegardes en cascade..

Bon j'ai essayé d'être le plus clair possible mais... et en plus impossible de joindre les fichiers, c'est énorme et çà doit être installé sur un serveur (le code est écrit pour celà..)

Merci pour votre patience.

A+
Philippe
 

Staple1600

XLDnaute Barbatruc
Re : Difficultés avec .OnTime

Re


Ci-joint un classeur avec une procédure (dans un module)
(utilisant On.Time)

cela sauvegarde bien toutes les 10 secondes

(sous Excel 2000 en tout cas)

En espérant que cela puisse aider à résoudre ton problème.

A+
 
Dernière édition:

myDearFriend!

XLDnaute Barbatruc
Re : Difficultés avec .OnTime

Bonsoir le fil, le Forum,

Eh bien moi, j'aime bien la méthode OnTime, même si elle souffre de quelques défauts, elle reste tout de même le seul moyen simple de pouvoir assurer une temporisation dans une procédure sans pour autant bloquer toute action du code ou de l'utilisateur.

Je me permets d'insérer ici un lien sur cet article que je lui consacrais et qui pourrait peut-être aider à éclaircir certains points.

Cordialement,
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia