Save auto selon 2 dates du jour

  • Initiateur de la discussion lo
  • Date de début
L

lo

Guest
Rebonjour le forum ;-)

Je tente d'effectuer deux sauvegarde automatique / jour pour un utilisateur qui peut oublier de l'effectuer manuellement ;-)
J'ai donc mis ce code dans ThisWorkbook :

Option Explicit

Private Sub Workbook_Open()
Dim SystemTime As Date
Dim UpdateTimeMidi As Date
Dim UpdateTimeSoir As Date

SystemTime = Format(Now, "HH:MM:SS")
UpdateTimeMidi = "12:30:00"
UpdateTimeSoir = "19:00:00"

If SystemTime = UpdateTimeMidi Or SystemTime = UpdateTimeSoir Then
save
Else
MsgBox "Sauvegarde automatique effectué"
End If

End Sub

Et celui-ci dans Module2 :

Sub save()

Application.Quit
ThisWorkbook.Close True
End Sub

Ou ce situe mon err sachant que je souhaite deux sauvegardes par jour (une à 12h30 et une à 19h00). La première renvoit un msgbox comme quoi la save à bien fonctionnée, et la seconde sauvegarde et ferme le fichier ...

Bonne fin de mat' à tous/toutes ;-)
 
J

JB

Guest
- Salut Lo,


je vois pas dans ta macro où tu sauvegardes ton classeur, tu le fermes simplement.

Remplace "ThisWorkbook.Close True"

par

ActiveWorkbook.Save

et le classeur sera sauvegardé dans l'état où il se trouve.

A+

JB
 
P

Pascal76

Guest
Salut

Je pense que tu te trompes d'instructions.

Là quand tu ouvres ton fichier sil il est 12h30 ou 19h00 au moment où tu ouvres tu vas déclencher la sauvegarde mais c un gros coup de bol si tu ouvres pil poil à l'heure.

Il faut plutôt une macro qui se lance à l'heure prévue.

Regarde ce fil

Lien supprimé

Bon courage

Pascal
 
Y

Yeahou

Guest
Bonjour Lo, Jb, le forum

Tu n'as aucune instruction de sauvegarde mais même si tu l'ajoutes, le principal problème vient du fait que la sauvegarde ne s'effectuera que si le classeur est ouvert à l'heure indiquée. La proc workbook.open, comme son nom l'indique, n'est exécutée qu'à l'ouverture du classeur. Il faut que ta procédure de sauvegarde soit dans un module et qu'elle soit appelée par un ontime lancé dans workbook.open.
Essaie également d'éviter d'appeler tes procédures du libellé d'une instruction, cela peut provoquer des bugs génants, surtout sur une procédure de sauvegarde. Save est une instruction existante, préfères lui Sauve_Auto ou tout autre libellé qui ne porte pas à confusion.

Cordialement, A+
 
L

lo

Guest
alors j'ai modifié mon This.Workbook pour :

Option Explicit

Private Sub StartMacroSaveNQuit()
Application.OnTime "18:30:00", "saveandquit", "19:00:00"

End Sub

Private Sub StartMacroSave()
Application.OnTime "11:13:00", "saveauto", "11:20:00"
End Sub

et mon module2 pour :

Sub saveandquit()
ActiveWorkbook.save
Application.Quit
End Sub

Sub saveauto()
ActiveWorkbook.save
msgbox "La sauvegarde automatique a été effectué"
End Sub


J'ai rajouté un msgbox dans StartMacroSave pour vérifier que la save avait bien été lancé et je n'ai rien eu...
On est bien d'accord que la macro saveauto se lance une fois entre 11:13 et 11:20 ?
j'ai du loupé un wagon ;)
 
Y

Yeahou

Guest
Re à tous

Plutôt comme cela, et il faut enregistrer tes modifs, fermer ton classeur et le rouvrir pour tester.

A+

Private Sub Workbook_Open()
Application.OnTime "18:30:00", "saveandquit", "19:00:00"
Application.OnTime "11:13:00", "saveauto", "11:20:00"
End Sub
 
@

@+Thierry

Guest
Bonjour Lo, re Yeahou, Pascal, JB,

Bon je ne fais que passer car il y a une "désinformation" contenue dans ce fil...Et ceci à toutes fins utiles et futures, afin de ne pas induire en erreur les lecteurs et lectrice d'XLD.

En effet l'instruction ThisWorkBook.Close True SAUVE bien le classeur avant de le fermer.

En clair l'instruction pourrait aussi s'écrire comme ceci :
ThisWorkBook.Close SaveChages:=True

C'est si, à l'inverse, on utilise "ThisWorkBook.Close False" que là le classeur est fermé SANS être sauvé (et sans message de demande de confirmation d'ailleurs)

Voilà, sinon pour le reste tant mieux si ça roule pour Lo !

Bon aprèm
@+Thierry
 
L

lo

Guest
Salut Thierry,

Me disait bien aussi (voir un autre fil ou tu me dépann:p) que ThisWorkBook.Close True sauvait bien le fichier, mais la soluce apportée ici fonctionne elle aussi très bien c'est le principal ;-)

Thank pour l'info en tout cas.

Bonne journée

A+
 

Discussions similaires

Réponses
3
Affichages
524
Réponses
6
Affichages
311

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi