Désactiver l'instruction application.ontime
#1
Aspirant XLPages

Inscription: 02/03/2008
De 94170 Le Perreux Sur marne

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2002
Posté le : 15-07-2008 21h54
Bonjour, j'ai besoin d'un avis car j'ai utilisé l'instruction suivante : Application.OnTime Range("In_40minutes"), "'Fermeture """ & Time_Opening & """'", , False

et ça ne semble pas avoir d'effet . L'objectif est de désactiver l'application.ontime qui consiste à fermer un classeur au bout de 40' d'utilisation dans le cas où l'utilisateur va quitter le classeur avant 40'. Jre dis que ça ne marche pas car après avoir fermé le classeur avant 40' je continue à avoir un peu plus tard un message qui me dit que le système cherche le classeur en question.
voici les instructions de départ :
Range("In_40minutes") = TimeNow + TimeValue("00:40:00")    'To quit the worksheet after 40'
Application.OnTime Range("In_40minutes"), "'Fermeture """ & Time_Opening & """'"   

pour info, la syntaxe du paramètre de la macro fermeture est d'enfer et m'a été communiquée par Myta que je remercie encore...mais ce n'est pas le sujet

La macro de fermeture s'appelle fermeture

In_40minutes est une valeur qui est stockée dans une celleule excel.

Je ne joins pas le fichier qui fait un MO

Merci d'avance à ceux qui vont passer un peu de temps sur ce sujet
Michel
Hors Ligne
Rapport   Haut 

Re: Désactiver l'instruction application.ontime
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 15-07-2008 22h50
Bonsoir Mira57,

La syntaxe de la méthode OnTime est la suivante :
Application.OnTime ValeurDeTemps, "ProcedureTraitement"
Pour annuler une session OnTime, la syntaxe à utiliser est celle-ci :
Application.OnTime ValeurDeTemps, "ProcedureTraitement", , False
Pour annuler une session, les expressions ValeurDeTemps et ProcedureTraitement doivent être STRICTEMENT égales aux expressions utilisées pour le lancement de la dite session. (voir l'article La méthode OnTime).

Dans le code que tu présentes, on ne sait pas ce que vaut Time_Opening, il convient de vérifier que sa valeur n'est pas modifiée entre l'appel (le lancement) de OnTime et son annulation (sinon, l'annulation échoue).

Il est aussi possible que ton expression ValeurDeTemps subisse un arrondi quelconque lors de son stockage dans la cellule. Ce qui rendrait inopérante la procédure d'annulation OnTime comme ci-dessus.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Désactiver l'instruction application.ontime
#3
Aspirant XLPages

Inscription: 02/03/2008
De 94170 Le Perreux Sur marne

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2002
Posté le : 15-07-2008 23h18
Ok, merci Didier. Je vais tester tes points, je voulais une confirmation de ta part sur le bon choix d'instruction

Michel

Hors Ligne
Rapport   Haut 

Re: Désactiver l'instruction application.ontime
#4
Accro XLPages

Inscription: 17/08/2007
De Québec, Canada

Messages: 180

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2003, 2007 (FR) & MsProject 2003
Posté le : 15-07-2008 23h39
Salut le forum

Au début du code d'un module
Option Explicit
'Variable déclarer en Public pour conserver les valeurs
Public Time_Opening As Date
Public Apres40minutes As Date
et le code dans ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Arret du processus
On Error Resume Next
Application.OnTime TimeValue(Apres40minutes), "'Fermeture """ & Time_Opening & """'", , False
End Sub

Private Sub Workbook_Open()
    Worksheets("Weekly").Select
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim Compteur As Integer

'..... je vous passe les instructions qui n'ont aucun rapport

'workbook closed after 40'
'J'ai supprimer les deux Dim pour les déclarer en Public
Time_Opening = Format(Time, "HH:MM:SS")     'Init Time opening
Apres40minutes = Now + TimeValue("00:00:10")
Application.OnTime TimeValue(Apres40minutes), "'Fermeture """ & Time_Opening & """'"            'Syntaxe de Myta

   
'----- réinit other events -----------
Worksheets("Weekly").Select
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Et sans passer par une cellule qui pourrait être problématique
Mytå

P.S. J'ai mis le temps à 10 secondes pour faire les tests, 
remplacer TimeValue("00:00:10") par TimeValue("00:40:00")





Pièce jointe:
xls Mira57_V1.xls   [ Taille: 29.50 Ko - Téléchargements: 785 ]
Edité par Mytå le 15/07/2008 23:59:30
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes