XL pour MAC Enregistrer automatiquement toutes les 30 minutes

Valter

XLDnaute Occasionnel
Bonjour le forum ,
Après de nombreux essais je bute sur un problème dont je n'ai pas trouvé la solution, j'aimerai que toutes 30 minutes, automatiquement s'affiche un msgbox de rappel en disant ceci : "cela fait 30 minutes que tu n'as pas sauvé ton travail, veux tu le sauver maintenant ?" et que l'utilisateurs puisse choisir oui ou non, si oui la sauvegarde s'exécute, si non : Exit Sub.
Mais ce qui es le plus difficile, c'est que j'aimerai que le msgBox s'affiche uniquement si le travail n'as pas été sauvegardé auparavant durant ou moins 30 minutes, si le travail est sauvegardé manuellement par l'utilisateur toutes les 15 minutes par exemple, he bien ... pas besoin d'afficher automatiquement le msgBox.
Merci pour votre aide.
 

dg62

XLDnaute Barbatruc
Bonjour,
Pourquoi ne pas utiliser l'enregistrement auto ?
Ce lien n'existe plus
enregistrement auto.png
 
Dernière édition:

jmfmarques

XLDnaute Accro
Bonjour
Essayons de ne pas confondre récupération avec sauvegarde

Je verrais plutôt les choses de cette manière :
dans un module standard :
VB:
Public prochain As Date
Const delai As Long = 10


Public Sub sauve_qui_veut()
  If prochain <= Now Then
  msg = delai & " secondes " & " se sont écoulés sans sauvegarde depuis ta dernière modification" & _
  "veux tu sauvegarder maintenant  maintenant ?"
    If MsgBox(msg, vbYesNo) = vbYes Then
       'instructions de sauvegarde (saveas) ici
       MsgBox "classeur sauvegardé"
    End If
    prochain = DateAdd("s", delai, Now)
  End If
End Sub

et dans le module de ThisWorkBook

VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   If prochain = 0 Then prochain = DateAdd("s", delai, Now)
    If prochain <= Now Then
      prochain = DateAdd("s", delai, Now)
      Application.OnTime prochain, "sauve_qui_veut"
    End If
End Sub

Inutile de sauvegarder si pas de modif faite
On évite également l'utilisation en boucle de Ontime
 

Valter

XLDnaute Occasionnel
Merci, c'est exactement ce que je désirais, il y a cependant juste un problème, la macro se met en route chaque fois que j'écris quelque chose, je voudrais que elle se mette en route disons 20 minutes après la dernière sauvegarde. J'ai essayé de mettre une valeur dans "s" comme par exemple 60 pour dire chaque 60 secondes, mais un message d'erreur s'affiche...
 

jmfmarques

XLDnaute Accro
je voudrais que elle se mette en route disons 20 minutes après la dernière sauvegarde
Aucun problème pour qu'elle "se mette en route" dans ces conditions, mais (réfléchissons ensemble)elle se déclencherait alors sans cesse, à chaque instant, dès lors que chaque "instant" suivant serait au-delà du délai accepté !
Prends un café et penses-y calmement, logiquement, sans le moindre code, ... tu vas vite comprendre. :)
Pour le reste (l'utilisation du délai dans la méthode/fonction Dateadd), je te laisse ouvrir ton aide VBA interne et lire, analyser et appliquer ce que tu trouveras à la rubrique DateAdd, fonction.
C 'est ainsi, que l'on se forme et ainsi, que je me suis formé
Amitiés
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG