Enregistrement automatique sans redémarrer le fichier

Résolu/Fermé
dmutambay Messages postés 25 Date d'inscription jeudi 31 octobre 2019 Statut Membre Dernière intervention 10 août 2023 - Modifié le 19 juin 2023 à 09:14
 Dmut - 27 juin 2023 à 14:44

Bonjour à tous,

J'ai écrit  le code VBA ci-après pour permettre un enregistrement automatique  du fichier excel XLSM chaque 10 min.

Quant à l'enregistrement, le code marche sans problème, mais quand je ferme le fichier excel, il redémarre automatiquement après 10 min.

Pourriez-vous m'aider à corriger le code de manière à ne plus redémarrer  10 min après sa fermeture.

Le code actuel:

Dans ThisWorkbook:

Private SubWorkbook_Open

Application.OntimeNow + TimeValue ( "00:10:00"), "Enregistrement"

End Sub

Dans un module:

Sub_Enregistrement ()

Application.DisplayAlerts = False

DoEvents

ActiveWorkbook.Save

Application.OntimeNow + TimeValue ( "00:10:00"), "Enregistrement"

End Sub
A voir également:

6 réponses

Merci beaucoup, God bless you!

Je puis donc clôturer le sujet.

Merci à tous!

aquarelle Messages postés 7140 Date d'inscription dimanche 8 avril 2007 Statut Modérateur Dernière intervention 25 mars 2024 1 302
17 juin 2023 à 22:02

Bonsoir,

Peut-être rajouter une macro dans le module :
 

Sub TimeStop ()

Application.OntimeNow + TimeValue ( "00:10:00"), _ Procedure:="Enregistrement", Schedule:=False

End Sub

Puis dans this Worbook :

Workbook_BeforeClose(Cancel As Boolean)

Call TimeStop

End Sub

Ou en tout cas quelque chose s'en rapprochant, qui mette fin à la procédure d'enregistrement automatique avant de fermer le classeur. (/!\ Je n'ai pas testé)

yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495
18 juin 2023 à 12:42

bonjour, je pense qu'il est nécessaire, dans timestop, de préciser exactement le moment qui a été précisé dans le dernier appel à ontimenow.

0
dmutambay Messages postés 25 Date d'inscription jeudi 31 octobre 2019 Statut Membre Dernière intervention 10 août 2023
18 juin 2023 à 16:22

Bonjour chers amis, merci pour vos interventions.

Cher aquarelle, j'ai testé ta solution mais pas de changement, le fichier redémarre tjrs après 10 minutes.

Cher yg_be, merci pour votre proposition, si vous pouvez la traduire dans un code.

Merci j'attends la suite

yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495
18 juin 2023 à 18:02

En embrayant sur la suggestion de aquarelle, voici:

Option Explicit


Private Sub Workbook_Open()
mom_appel = Now() + TimeValue("00:1:00")
Application.OnTime mom_appel, "Enregistrement"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call TimeStop
End Sub
Option Explicit

Global mom_appel As Date

Sub Enregistrement()
Application.DisplayAlerts = False
DoEvents
ActiveWorkbook.Save
mom_appel = Now() + TimeValue("00:1:00")
Application.OnTime mom_appel, "Enregistrement"
End Sub
Sub TimeStop()
If mom_appel Then
    Application.OnTime mom_appel, Procedure:="Enregistrement", Schedule:=False
End If
End Sub

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dmutambay Messages postés 25 Date d'inscription jeudi 31 octobre 2019 Statut Membre Dernière intervention 10 août 2023
21 juin 2023 à 11:04

Bonjour yg_be, 

Je te remercie pour ta solution, elle devrait en principe marcher, avec mon fichier ça ne marche pas, il s'agit de la fonction Option Explicit qui donne des messages d'erreurs. 

Si vous avez une autre solution ou quelqu'un d'autre aurait une autre solution pour la sauvegarde automatique du fichier XLSM après chaque x time, merci.

yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495
21 juin 2023 à 12:56

Montre ce que tu as mis dans le code du module et dans le code du classeur.

Montre aussi le message d'erreur exact.

0

 cher yg_be,

Je m'excuse beaucoup pour avoir pris du temps. Cela est dû aux conditions dans lesquelles je travaille. Je voudrais dire que le code marche maintenant très bien. Je parviens maintenant à obtenir un Enregistrement automatique sans redémarrage du fichier. Dans ThisWorkbook, procédure beforeclose, j'ai déplacé la ligne de commande portant l'instruction: Call TimeStop vers le haut càd avant les autres commandes que j'avais mises servant à rétablir le masquage du ruban avant la fermeture. Cependant j'aimerais savoir l'importance de s commandes:

Option explicit et

Global mon appel As Date

Merci infiniment

yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495
27 juin 2023 à 14:06

"Option explicit" sert à forcer la déclaration des variables.  Cela permet de détecter plus facilement des erreurs dans les noms de variables.  C'est donc utile, pas indispensable.

"Global mon appel As Date" , au début du module, permet d'utiliser la même variable mon_appel partout dans le projet.  C'est donc indispensable dans l'exemple.

0