Excel : macro de sauvegarde automatique [Résolu]

Bonjout à toutes et à tous,

Utilisant un tableau excel pour faire mes comptes tous les jours, j’utilise pour le moment comme moyen de sauvegarde une impression papier.

J’ai un bouton reset qui m’efface toutes les entrées dans le tableau que j’active tous les matins me permettant d’avoir un tableau vierge pour commencer la journée.

J’ai eu beau essayer de chercher partout un moyen de sauvegarder automatiquement mon fichier juste avant de tout effacer, mais mes recherches sont restées vaines.

La seule chose que j’ai trouvée est une macro complémentaire qui enregistre mon fichier toutes les x minutes. Mais moi je voudrais une macro qui m’enregistre la date et l’heure ajoutée au nom du fichier juste quand je clic sur reset.

Est ce bien compréhensible???

Par avance, merci

:bounce:

Bonjour,

C’est possible mais faut mettre les mains dans le camboui.
Tu sais programmer en VBA ?

J’ai quelques notions mais vraiment très peu.

Par contre si tu “excelles” en vba, je t’écoute attentivement. :slight_smile:

Tu ouvre ta macro "reset" et tu rajoutes avant ton code :

Set NewBook = Workbooks.Add
fName = "nomdufichier" & "_" & Now
NewBook.SaveAs Filename:=fName

Merci beaucoup mais à priori cela ne marche pas chez moi.

J’ai ça comme bug dans la macro :

Erreur d’execution 1004:
Fichier inaccessible. Essayez l’une des opérations suivantes:

  • Vérifiez que le dossier spécifié existe
    *Vérifier que le dossier dans lequel se trouve le fichier n’est pas en lecture seule
    *Vérifier que le nom du fichier ne comporte pas les caractères suivants:
    | <> ? [] : ni *

Si tu peux m’en dire plus…

Suis-je bête, la fonction “Now” rencoie des “/” qui ne sont évidement pas compris pour le nom du fichier. Je reviens plus tard avec une autre methode (j’ai du boulot pour l’instant :wink: )

Set NewBook = Workbooks.Add
fName = &#34;nomdufichier&#34; &amp; &#34;_&#34; &amp; replace&#40;Now, &#34;/&#34;, &#34;_&#34;&#41;
NewBook.SaveAs Filename&#58;=fName

peut-être…

Set NewBook = Workbooks.Add
fName = &#34;nomdufichier&#34; &amp; &#34;_&#34; &amp; replace&#40;Now, &#34;/&#34;, &#34;_&#34;&#41;
fName = replace&#40;fName, &#34;&#58;&#34;, &#34;&#34;&#41;
NewBook.SaveAs Filename&#58;=fName

Il y a aussi les “:” de l’heure :wink:

Merci Takama, ton code marche bien.
Mais le problème, c’est que quand j’active ta macro, ça me crée bien un nouveau fichier avec le bon nom mais il est vierge.
Moi je voulais que ça crée une copie avec tout ce que j’ai dans mon fichier.

MAis bon, ça avance, je n’ai jamais été aussi prèt de mon objectif.

tu as bien mis le code de Takama au tout début du code existant ?

et comme ça :

fName = &#34;nomdufichier&#34; &amp; &#34;_&#34; &amp; Replace&#40;Now, &#34;/&#34;, &#34;_&#34;&#41;
fName = Replace&#40;fName, &#34;&#58;&#34;, &#34;&#34;&#41;
ActiveSheet.SaveAs Filename&#58;=fName

Toujours la même chose, classeur vierge.
:’(

Forcément que ton classeur est vide étant donné que tu exécutes ta macro "reset" juste après.

Il faudrait pour cela réouvrir ton ancien fichier (qui je suppose à toujours le même nom) et exécuter la macro “reset” sur ce fichier, et non sur celui que l’on vient de sauvegarder.

Le code pourrait donner ceci :

fName = &#34;nomdufichier&#34; &amp; &#34;_&#34; &amp; Replace&#40;Now, &#34;/&#34;, &#34;_&#34;&#41;
fName = Replace&#40;fName, &#34;&#58;&#34;, &#34;&#34;&#41;
ActiveSheet.SaveAs Filename&#58;=fName
Workbooks.Open &#34;tonfichierdebase.xls&#34;
Workbooks&#40;&#34;tonfichierdebase.xls&#34;&#41;.Activate

***ta macro reset***

Workbooks&#40;fName&#41;.Close SaveChanges&#58;=False

Ce code devrait te créer un fichier avec la date et l’heure courante, ouvrir ton fichier de base, le réinitialiser et fermer le fichier date+heure.

Merci beaucoup à vous.

J’ai réussi à faire ma sauvegarde automatique en faisant un truc tout basic, :

[code]ActiveWorkbook.Save

Application.DisplayAlerts = False

chemin1 = "destiantion"
fName1 = "nom du fichier" & " du " & Format(Now, "dd-mm-yyyy" & " à " & _
"hh""h""mm""") & ".xls"

ActiveWorkbook.SaveAs chemin1 & fName1
chemin2 = "destination"
fName2 = "nom du fichier" & ".xls"
ActiveWorkbook.SaveAs chemin2 & fName2
[/code]

Par contre maintenant, je voudrais que le fichier que j’enregistre soit enregistrer en lecture seule.

J’ai bien trouvé ce code : ReadOnly&#58;=True

mais je ne sais pas à quel moment il faut que je le mette.

Tu peux à la place les protéger avec un mot de passe grâce à la propriété "protect".

J’ai protéger mon fichier en écriture à l’aidde du code suivant: ActiveWorkbook.SaveAs chemin1 &amp; fName1, Password&#58;=&#34;&#34;, WriteResPassword&#58;=&#34;mot de passe&#34;, ReadOnlyRecommended&#58;= _ &nbsp; &nbsp; &nbsp; &nbsp;False, CreateBackup&#58;=False

Mais maintenant je voudrais le code vba pour désactiver cette protection.

Merci

Ben c’est pareil mais au lieu d’utiliser “SaveAs” tu utilises “Open”

Rappelle toi mon code:

[code]ActiveWorkbook.Save

Application.DisplayAlerts = False

chemin1 = "destiantion"
fName1 = "nom du fichier" & " du " & Format(Now, "dd-mm-yyyy" & " à " & _
"hh""h""mm""") & ".xls"

ActiveWorkbook.SaveAs chemin1 & fName1, Password:="", WriteResPassword:="mot de passe", ReadOnlyRecommended:= _
      False, CreateBackup:=False

chemin2 = "destination"
fName2 = "nom du fichier" & ".xls"
ActiveWorkbook.SaveAs chemin2 & fName2
[/code]

Je passe par 2 sauvegardes sur le même fichier donc je n’utilise pas “open”.

C’est possible ce que je demande au moins? :confused:

En fait j’ai trouvé, il suffisait d’enregistrer la 2 eme fois sans le mot de passe.

[CODE]ActiveWorkbook.Save

Application.DisplayAlerts = False

chemin1 = "destiantion"
fName1 = "nom du fichier" & " du " & Format(Now, "dd-mm-yyyy" & " à " & _
"hh""h""mm""") & ".xls"

ActiveWorkbook.SaveAs chemin1 & fName1, Password:="", WriteResPassword:="mot de passe", ReadOnlyRecommended:= _
False, CreateBackup:=False

chemin2 = "destination"
fName2 = "nom du fichier" & ".xls"
ActiveWorkbook.SaveAs chemin2 & fName2, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False