Macro activé à partir du montant d'une cellule

nomis22

XLDnaute Nouveau
Bonjour à tous les Exceliens et Exceliennes,

J'aurais voulu savoir s'il était possible d'effectuer une macro qui se lance elle même celon la valeur d'une cellule.
J'explique mon idée, j'aurais souhaité effectuer des sauvegarde automatique de mon fichier chaque semaine. Ainsi j'ai pensé à un procédé qui est le suivant:
je crée une cellule avec la fonction aujourdui
lorsque je lance la macro cela copie et colle en valeur la date du jour dans une cellule adjacente
ensuite j'ai une cellule qui calcul le nombre de jour entre la dernière sauvegarde et la date du jour lorsque cette cellule affiche le nombrez magique 7 j'aimerais que la macro ce relance toute seul et ainsi de suite

il doit juste me manquer un petit truc pour effectuer cette macro ça serait sympa de me donner un petit coup de pouce, merci d'avance

Cordialement
SK
 

Gorfael

XLDnaute Barbatruc
Re : Macro activé à partir du montant d'une cellule

Salut nomis22 et le forum
J'explique mon idée, j'aurais souhaité effectuer des sauvegarde automatique de mon fichier chaque semaine.
archiver automatiquement une copie ?
À chaque archivage, tu inscris la date dans une cellule (A1, par exemple).
Dans le module ThisWorkBook
Quand tu ouvres (WorkBook_Open) ou quand tu fermes (Workbook_BeforeClose), tu teste la différence entre A1 et Date (variable système) et tu déclenches ou non ton archivage, avec ou sans définition automatique du nom (fichier + date) et remise à jour de A1.
A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro activé à partir du montant d'une cellule

Bonjour nomis,

voir exemple en pièce jointe

à+
Philippe

Édit: Bonjour Gorfael
 

Pièces jointes

  • 111.xls
    43 KB · Affichages: 62
  • 111.xls
    43 KB · Affichages: 67
  • 111.xls
    43 KB · Affichages: 60

nomis22

XLDnaute Nouveau
Re : Macro activé à partir du montant d'une cellule

Merci pour ta réponse mais je doit confesser que n'ayant jamais reçu de formation en VBA je suis incapable de créer un code par mes propres moyens, je peut à la rigueur l'adapter en changeant les cellules ou les plages.

Alors si tu pouvais rapidement m'écrire le code à copier dans la page VBA ça serait vraiment sympa.
Merci pour ton aide.

Cordialement
SK
 

nomis22

XLDnaute Nouveau
Re : Macro activé à partir du montant d'une cellule

merci Laurent55 pour ton code, j'ai juste un petit soucis qui est le suivant:
ton code marche très bien mais il enregistre le fichier directement au même endroit et en quelque sorte écrase les enregistrements précédent.
Dnas mon cas j'ai créé une base de données client que j'aimerais sécuriser au cas ou un collaborateur l'utilise mal et la détériore ou suite suite à une mauvaise manip supprime des données. Donc j'aurais souhaité que chaque semaine un fichier soit sauvegardé dans un coin du serveur en cas de grosse boulette d'un collaborateur pour ne pas à avoir à tout refaire.

Mon stage se termine demain dans l'entreprise alors j'aurais bien aimé mettre ça en place car j'ai pas tellement confiance dans leur utilisation du fichier.

Merci beaucoup en tout cas.
Cordialement
SK
 

nomis22

XLDnaute Nouveau
Re : Macro activé à partir du montant d'une cellule

En faite tout ces codes sont parfait mais lorsque dans le code on met:
ActiveWorkbook.Save
Est-ce qu'il n'y aurait pas un moyen pour que cela mette un truc du style sauvegarder sous avec l'endroit défini automatiquement et le nom du fichier plus la date de sauvegarde.
Merci de votre aide.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro activé à partir du montant d'une cellule

Re,

PATIENCE !!!!!!!!!!!
voilà qui est fait

à+
Philippe

Édit: je serai absent cet après-midi
 

Pièces jointes

  • 111.xls
    41.5 KB · Affichages: 65
  • 111.xls
    41.5 KB · Affichages: 69
  • 111.xls
    41.5 KB · Affichages: 59

nomis22

XLDnaute Nouveau
Re : Macro activé à partir du montant d'une cellule

Désolé je ne voulais pas te presser, c'est juste que j'essaye d'être le plus clair précis et je réfléchis en même temps alors je reposte mes idées.

Un grand merci pour ton aide, franchement c'est super sympa puis je pense que ça va être bien utile néanmoins j'ai un léger soucis au niveau de la cellule car je ne comprend aps pourquoi parfois elle remet la date du jour et parfois non. Et cela est assez embêtant car si la date reste il me l'enregistre mais vu que un fichier porte déjà le même nom cela fait un peu beugger le tout.
voilà ton code adapté à mon fichier

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Date - Sheets("bdd").[A1] >= 7 Then
Sheets("bdd").[A1] = Date
ActiveWorkbook.SaveAs Filename:="X:\BASE DE DONNEES CLIENT\Sauvegarde automatique\" & Format(Date, "dd mm yyyy") & ".xls", FileFormat _
:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
End If
End Sub

je comprend bien que normalement la ligne:
Sheets("bdd").[A1] = Date
s'occupe de changer la date lors de la sauvegarde mais j'ai l'impression que ça ne marche pas toujours.

Merci pour ton aide
Cordialement
SK
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro activé à partir du montant d'une cellule

Re,
j'aurais souhaité effectuer des sauvegarde automatique de mon fichier chaque semaine
.............
Et cela est assez embêtant car si la date reste il me l'enregistre mais vu que un fichier porte déjà le même nom cela fait un peu beugger le tout.
Pour la sauvegarde automatique toutes les semaines, c'est ceci:
If Date - Sheets("bdd").[A1] >= 7 Then

Pour éviter le bug il vaudrait mieux ajouter l'heure du fichier

remplace:

ActiveWorkbook.SaveAs Filename:="X:\BASE DE DONNEES CLIENT\Sauvegarde automatique\" & Format(Date, "dd mm yyyy") & ".xls"

par:

ActiveWorkbook.SaveAs Filename:="X:\BASE DE DONNEES CLIENT\Sauvegarde automatique\" & Format(Date, "dd mm yyyy") & Format(Time, "hh mm ss") & ".xls"

ce qui a pour but d'avoir toujours des sauvegardes portant un nom différent
( sauf si tu arrives à sauvegarder 2 fois au cours de la même seconde) ;)

à+
Philippe
 

nomis22

XLDnaute Nouveau
Re : Macro activé à partir du montant d'une cellule

Re,

Oui c'est efficace mais bon cela prend un peu de place quand même car en faite à chaque fermeture du fichier une version est enregistrer.
Ce que je comprend pas c'est pourquoi lorsqu'une copie est faite lors de la fermeture du fichier la date du jour s'incrit bien en A1 furtivement mais lors de la réouverture du fichier on retrouve la date que j'avais mis pour mon test.

En faite il est obligatoire de changer manuellement la date de la cellule sinon à chaque fermeture du fichier une version est enregistrée.
Phlaurent55 ou une autre personne si vous voyez un moyen de contrer ce léger problème.

Merci pour votre aide
a+
SK
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro activé à partir du montant d'une cellule

Re,
J'explique mon idée, j'aurais souhaité effectuer des sauvegarde automatique de mon fichier chaque semaine
Voilà déjà quelque chose qui m'interpelle:
Pourquoi ne pas sauver le fichier à chaque utilisation (avant la fermeture) ce serait quand même plus raisonnable
il faudrait également penser à protéger tout ce qui peut être protégé ( verrouiller les cellules, protection de la feuille)
Dnas mon cas j'ai créé une base de données client que j'aimerais sécuriser au cas ou un collaborateur l'utilise mal et la détériore ou suite suite à une mauvaise manip supprime des données. Donc j'aurais souhaité que chaque semaine un fichier soit sauvegardé dans un coin du serveur en cas de grosse boulette d'un collaborateur pour ne pas à avoir à tout refaire.
il ne faut pas perdre de vue que la semaine compte 7 jours et que si l'utilisateur fais des "boulettes" pendant 6 jours, ses conneries seront sauvegardées le 7ème jour

Si c'était pour moi , je ferais autrement:

Tout d'abord, demander le nom de l'utilisateur (par macro) à l'ouverture du fichier et stocker ce nom dans une feuille cachée


à la fermeture du fichier, utiliser la macro que je t'ai faite (uniquement la ligne qui concerne la sauvegarde, plus besoin du test de la cellule A1) qui nomme le fichier en tenant compte du jour et de l'heure

Avantages:
- si erreur commise par un utilisateur, il suffira de reprendre une version antérieure
- on pourra facilement retrouver le trouduc qui a commis la faute en allant le rechercher dans la feuille cachée
Oui c'est efficace mais bon cela prend un peu de place quand même car en faite à chaque fermeture du fichier une version est enregistrer.
il faut savoir choisir entre risquer de perdre des données et faire des frais dans le but d'augmenter la capacité de stockage

Ce que je comprend pas c'est pourquoi lorsqu'une copie est faite lors de la fermeture du fichier la date du jour s'incrit bien en A1 furtivement mais lors de la réouverture du fichier on retrouve la date que j'avais mis pour mon test.
je n'ai pas ce problème chez moi

à+
Philippe
 
Dernière édition:

nomis22

XLDnaute Nouveau
Re : Macro activé à partir du montant d'une cellule

Re,

après de nombreux essaye infractueux je reviens vers vous, ton explication est assez compliqué et je ne pense pas être ne mesure de réaliser ce que tu proposes.

Je fais joindre mon dossier de travail avec le fichier Excel (il faut je pense changer l'arboresse de la sauvegarde sinon le code ne marchera pas). On peut trouver la date d'archive en A1 quand on ferme le fichier une copie est bien effectué de plus on voit bien la date passer du 8 au 15/06/2011.
Mais lorsqu'on ouvre de nouveau le fichier la date n'a pas changer ce qui est embêtant car une archive sera donc effectué à chaque fermeture et non chaque semaine comme voulu.

En effet, mon but premier est de sécuriser le fichier sans perdre trop de données, si 5 jours de travail sont perdus ce n'est pas grave mais ce que je veux c'est ne pas avoir à recommencer tout depuis le début. Ensuite, le serveur n'étant pas exstensible indéfiniment je pense que une sauvegarde par semaine semble honnête et assez sécurisant.

Merci pour vos réponses

Amicalement
SK
 

Pièces jointes

  • BDD.xls
    290.5 KB · Affichages: 128
  • BDD.xls
    290.5 KB · Affichages: 127
  • BDD.xls
    290.5 KB · Affichages: 132

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro activé à partir du montant d'une cellule

Re,

à la fermeture du fichier, si la date en A1 est dépassée de 7 jours ,la macro met la date du jour en A1 et le fichier est sauvegardé.
Mais lorsqu'on ouvre de nouveau le fichier la date n'a pas changer ce qui est embêtant car une archive sera donc effectué à chaque fermeture et non chaque semaine comme voulu.
Lorsque j'ouvre le fichier après une sauvegarde déclenchée par la macro je retrouve la date du jour en A1
et c'est cette date (qui sera la même pendant 7 jours) qui servira de base lors de la prochaine sauvegarde

La date en A1 changera uniquement au moment de la prochaine sauvegarde, c'est-à-dire au minimum 7 jours plus tard.
Conséquences:
Toutes les entrées/modifs faites sur le fichier pendant la semaine précédent la sauvegarde :mad::mad::mad:, seront de toute manière perdues. :mad::mad::mad:
.......... no comment !!!!!!!!!!!

En effet, mon but premier est de sécuriser le fichier sans perdre trop de données, si 5 jours de travail sont perdus ce n'est pas grave
c'est ton point de vue et je le respecte mais je ne marque pas mon accord pour ce genre de chose

j'ai déjà vu sur ce forum des personnes qui demandent comment faire une sauvegarde toutes les 30 minutes.
Je ne juge pas, certains sont prévoyants, d'autres moins

à+
Philippe
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro activé à partir du montant d'une cellule

Re,

je pense que tu as des difficultés à exprimer ton problème de manière très précise et j'ai peut-être enfin compris ce qu'il te faut :confused:


avec ceci, le fichier sera sauvegardé à chaque fermeture en gardant le même nom

et une fois tous les 7 jours il sera sauvegardé sous un nouveau mon qui tient compte de la date et l'heure de la sauvegarde
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Date - Sheets("bdd").[A1] >= 7 Then
Sheets("bdd").[A1] = Now
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\GUV.DOMARMOREC\Bureau\BASE DE DONNEES CLIENT\" & Format(Date, "dd mm yyyy") & Format(Time, "hh mm ss") & ".xls", FileFormat _
        :=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
Else
ActiveWorkbook.Save
End If
End Sub

en espérant que cela répond à tes attentes

à+
Philippe
 

Discussions similaires