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.
 

Valter

XLDnaute Occasionnel
je ne voudrais pas que cela s'enregistre automatiquement, mais que l'utilisateur puisse avoir le choix, juste pour info comment faire pour activer l'enregistrement automatique..?
 

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
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas