Impossible d'interrompre un timer dans un fichier Excel
Bonjour à tous,
Je me permets de lancer ce sujet, car je ne trouve pas la solution dans les autres sujets sur les Timer du forum.
Je travaille avec un fichier comprenant plusieurs feuilles, dont une de suivi d'engins ("Suivi") et 2 plus spécifiques ("Trucks" et "Voitures"). J'ai programmé une sauvegarde automatique toutes les 5 minutes. J'ai aussi une programmation pour des alertes à heure fixe.
Lorsqu'un autre fichier excel est ouvert et que je ferme mon fichier de suivi, ce dernier se relance automatiquement. J'ai cru comprendre que c'était à cause du timer, alors que dans ma programmation, je demande bien l'arrêt du timer à la fermeture.
De ce fait, je suis obligé de tout fermer pour ne rouvrir que le second fichier, qui en plus est relativement lourd, donc pas agréable à rouvrir....
Voici le code dans ThisWorkbook :
Dim Timer As Date
Private Sub Workbook_Open() 'Affiche le feuille d'accueil et le Userform de méthode au démarrage
Worksheets("Accueil").Visible = True
Worksheets("Suivi").Visible = False
Worksheets("Suivi-PHP").Visible = False
Worksheets("Suivi+PHP").Visible = False
Worksheets("Autorisations").Visible = False
Worksheets("Trucks").Visible = False
Worksheets("Voitures").Visible = False
Methode.Show
Application.OnTime Now + TimeValue("00:05:00"), "enregistrement"
Application.OnTime TimeValue("07:15:00"), "Alerte1"
Application.OnTime TimeValue("08:00:00"), "Alerte3"
Application.OnTime TimeValue("08:10:00"), "Alerte4"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean) 'Affiche la date et l'heure de la dernière sauvegarde
Sheets("Suivi").[BO61] = Now
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Now + TimeValue("00:05:00"), Procédure = "enregistrement", Schedule:=False
ThisWorkbook.Save
ActiveWorkbook.Close True
End SubEt voici le code dans Module1 :
Dim Timer As Date
Sub enregistrement() 'Sauvegarde le fichier toutes les 5mn
Application.DisplayAlerts = False
DoEvents
ThisWorkbook.Save
Application.OnTime Now + TimeValue("00:05:00"), "enregistrement"
End SubJe ne vois pas ce qui cloche.
Merci de toute l'aide que vous pourrez me fournir et bonne journée.
Cordialement,
Armelito
Bonjour,
Sans trop maîtriser le sujet, 2 questions me viennent à l'esprit :
- Tu déclares le type de variable Timer sans l'utiliser par la suite, ça sert à quoi ?
- Tu dis arrêter le timer à la fermeture ? Quelle ligne de ton instruction te permets d'affirmer celà ? Je ne la vois pas
Bonne soirée !
Bonjour,
edit : bonjour Ergotamine,
pour arrêter un ontime, tu dois lui donner les mêmes paramètres que ceux utilisés lors du lancement.
application.ontime timevalue("18:00"),"procedure"
pour l'arrêter
application.ontime timevalue("18:00"),"procedure",schedule=false
or tu utilises
application.ontime now+timevalue("00:05:00"), il ne trouve pas cette planification et ne peut donc pas l'annuler. Tu dois donc avoir mémorisé les paramètres utilisés pour ton ontime pour pouvoir l'annuler.
Bonsoir Ergotamine,
Tu déclares le type de variable Timer sans l'utiliser par la suite, ça sert à quoi ?
En effet, j'avais fais une tentative avec un autre code où je déclarais Timer, mais que je n'ai pas gardé. Ça commence mal pour moi.
Tu dis arrêter le timer à la fermeture ? Quelle ligne de ton instruction te permets d'affirmer celà ? Je ne la vois pas
J'en déduis que ma commande Schedule:=False dans le Private Sub Workbook beforeClose ne sert à rien.
Bonsoir h2so4,
tu utilises application.ontime now+timevalue("00:05:00"), il ne trouve pas cette planification et ne peut donc pas l'annuler. Tu dois donc avoir mémorisé les paramètres utilisés pour ton ontime pour pouvoir l'annuler.
J'avais justement utilisé Timer = Now + TimeValue("00:05:00"), d'ou la variable Timer cité par Ergotamine, mais ça ne fonctionnait pas.
Mais si mon code de fermeture ne fonctionne pas non plus, je pense que je dois repartir sur les pistes que vous venez de me donner.
Juste une chose, Si ma commande Schedule:=False dans le Private Sub Workbook beforeClose n'est pas utile ou mal placée, comment puis-je la corriger ?
En tout cas, merci beaucoup pour votre aide.
Essaie avec un autre nom de variable que timer qui est un mot réservé vba
Bonsoir Ergotamine et h2so4,
En suivant vos conseils, 2 tests de chez moi semblent enfin concluants !!!
J'ai créé une variable Tempo, au lieu de Timer, et j'ai bien fait attention aux paramètres de lancement et de fermeture, et on dirait bien que ça marche.
Vous me retirez un épicéa du pied, vous n'avez pas idée
Je vérifie tout ça demain matin au boulot, et si le fonctionnement se confirme, je marquerais le sujet comme résolu.
Encore merci pour votre aide, et bonne continuation à vous.
Armelito.
Bonjour,
J'ai testé au boulot, le fichier ne se relance pas, donc c'est parfait.
Je vous remercie beaucoup pour votre aide. Vous êtes des boss !!!!