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 Sub

Et 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 Sub

Je ne vois pas ce qui cloche.

Merci de toute l'aide que vous pourrez me fournir et bonne journée.

Cordialement,

Armelito

Un petit up?

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

Rechercher des sujets similaires à "impossible interrompre timer fichier"