Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro d'auto-sauvegarde et d'auto-datation

  • Initiateur de la discussion Initiateur de la discussion micflo88
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

micflo88

XLDnaute Nouveau
Bonjour,

J'utilise excel 2003 :

J'ai réalisé un classeur contenant un calendrier de 12 mois.
J'ai mis une macro afin de glisser de 12 mois en 12 mois, et maintenant je souhaite créer une macro afin de de sauvegarder avec comme nom la date de modification et placé dans le dossier où se trouve le document original, tout cela avant d'utiliser la macro qui fait glisser les mois.

Merci pour votre aide.
 
Re : macro d'auto-sauvegarde et d'auto-datation

Bonsoir Micflo88,

Bienvenu sur ce forum.
Aucune réponse au bout de 5h prouve que ta demande n'est pas très explicite.
- Apportes plus de précisions
- si possible, envoies ton fichier en enlevant les éventuelles données confidentielles (zippé s'il fait plus de 50 Ko)

Tu auras assurément des réponses

Bonne soirée
Kotov
 
Re : macro d'auto-sauvegarde et d'auto-datation

Voilà,

J'ai compressé mon fichier et je vous le transmet.
Pour mes attentes, j'ai une macro qui se fait par la combinaison de touches : ctrl + maj + m et je voudrai créer une macro qui sauvegarde mon fichier dans le même dossier que l'original et qui le nomme avec le nom de l'onglet sur lequel on travail plus la date.

Merci de votre aide car je suis débutant en programmation.
 
Re : macro d'auto-sauvegarde et d'auto-datation

Bonjour MicFlo88,

Ton fichier me laisse quelque peu dubitatif.
Apparement, il est composé de 2 macros :
1. MISE_à_JOUR (dans le module 3) : à priori, pas de problème en vue.
2. Workbook_Open (dans le module 4 ?!)

Pas de macro dans les modules 1 et 2 (tu peux les virer), pas de macro dans les Objets Excel (feuilles, workbook, Userform..)

Donc, dans cette situation, ca ne risque pas de fonctionner :
- Workbook_Open est une procédure évènementielle à placer dans l'objet Workbook
. Dans le Module 4, elle est inerte (transfères la par couper/coller et vires le Module 4). Elle sera lancée à chaque ouverture du classeur.

- cette macro en appelle d'autres qui n'existent nulle part dans ton fichier. Je les ai coloriées en rouge (voir ci-après). Conséquence : bug !
Question: où sont ces macros ?

- tes variables (en bleu) ne sont pas déclarées (allocation d'espace mémoire, par défaut Excel propose l'espace maxi, alors que tu n'as besoin que du minimum). Cela ne gêne pas le fonctionnement de la macro mais c'est plus rationnel de les déclarer de la manière suivante :

Dim Sauver As Byte (si la réponse à ta MsgBox = "Oui" alors Sauver = vbYes = 6 ; si la réponse est "Non" alors Sauver = vbNo = 7)
Dim SauvegardeAuto as Boolean (tu n'as besoin que de VRAI ou FAUX)


- A quoi te sert la ligne que j'ai colorié en vert ?

Code:
Private Sub Workbook_Open()
[color=blue]sauver = MsgBox("Voulez activer la sauvegarde automatique pour ce classeur ?", vbYesNo)[/color]
If sauver = vbNo Then
Exit Sub
Else
[color=blue]
SauvegardeAuto = True[/color]
[color=red]
GetDirectory
ChoixDelai
ChoixNbSauvegardes
Sauve[/color]
End If
[color=green]Application.Goto Reference:="save"[/color]
    ActiveWindow.Close
    Application.Run "'Essai Relevé des Accidents - TF TG.xls'!MISE_à_JOUR"
End Sub

Je suppose que tu as trouvé une macro qui correspond plus ou moins à tes besoins, que tu l'a inséré dans ton fichier. Tu tentes maintenant de l'adapter.
C'est pas grave, c'est souvent comme ca qu'on fonctionne au début. C'est formateur, c'est honorable, mais c'est souvent une sacrée prise de tête et par la même occasion une perte de temps.

Je te propose de bien détailler tes besoins pour qu'on puisse t'aider.
Pas en 2 lignes mais plutôt une véritable explication :

ex.
"A tel moment, je souhaite que le fichier (nom du fichier) soit enregistré ou sauvegardé sous le nom (nom du fichier).
Si tel évènement se produit, alors prévoir telle conséquence..
etc.."

Personnellement, j'aime bien qu'on m'explique comme à un enfant de 5 ans ! (en informatique bien entendu, à éviter dans la vie courante ! 😉 )

Je te laisse réfléchir à ton projet.

A+
Kotov
 
Dernière édition:
Re : macro d'auto-sauvegarde et d'auto-datation

oui vous avez bien vu !

j'ai essayer de copier une macro qui correspondai a mes besoins et de l'adapter.
Mais mes connaissances en programation ne sont pas encore très évoluées.

Alors concernant mon problème, voici les étapes :

1 - Remplissage du tableau pour l'année en cours.
2 - Une fois l'année terminée, on réalise la macro en faisant la combinanison de touche ctrl+maj+m.

Et moi ce que je voudrai, c'est que lorsque l'on fait la combinaison de touche ctrl+maj+m, avant de retirer toutes les informations, je voudrais que les informations soit sauvegardées dans un fichier excel a part ayant le nom de l'onglet modifié (Sté 1 par exemple) ainsi que la date du jour de modification.

Merci pour votre aide
 
Re : macro d'auto-sauvegarde et d'auto-datation

Bonjour Micflo88,

Je te propose la macro suivante :

Code:
Sub AutoSave()
Dim Chemin$
Dim NomFichier$
Chemin = ThisWorkbook.Path
NomFichier = ActiveSheet.Name & "-" & CStr(Day(Date)) & "-" & CStr(Month(Date)) & "-" & CStr(Year(Date)) & ".xls"
ActiveWorkbook.SaveAs Chemin & Application.PathSeparator & NomFichier
Range(Cells(3, 1), Cells(32, 10)).ClearContents
End Sub

Comme tu débutes, je la commente ligne par ligne :
Déclaration de 2 variables au format "Chaîne".Le $ à la fin du mot équivaut à "As String".
Ainsi Dim Chemin$ équivaut à Dim Chemin As String
Dim Chemin$
Dim NomFichier$


Attribue à la variable Chemin le chemin du fichier actif (puisque c'est ton souhait).
Tu pourrais également rédiger le chemin : Chemin = "C:\Archives"
Chemin = ThisWorkbook.Path

Attribue à la variable NomFichier le nom souhaité.
Dans ton cas, le nom de l'onglet(ActiveSheet.Name) et la date du jour entrecoupée de séparateurs "-". Je termine le nom avec l'extension ".xls"
Notes que j'ai décomposé la date en Jour-Mois-Année. En effet, si j'avais simplifié par Cstr(Date), j'aurais obtenu un nom de fichier avec une date sous la forme jj/mm/aa. Or le caractère "/" n'est pas autorisé dans un nom de fichier et aurait généré un bug.
Pour info Cstr sert à convertir la date au format "chaîne". C pour convertir str pour String
NomFichier = ActiveSheet.Name & "-" & CStr(Day(Date)) & "-" & CStr(Month(Date)) & "-" & CStr(Year(Date)) & ".xls"


Maintenant je fais "Enregistrer Sous" et je précise le nom du fichier . Notes que j'insère Application.PathSeparator qui correspond au caractère "\"
ActiveWorkbook.SaveAs Chemin & Application.PathSeparator & NomFichier

Maintenant que la sauvegarde est réalisée, j'efface les données de la plage A3:J10
Il est donc possible de réaliser une nouvelle saisie
Range(Cells(3, 1), Cells(32, 10)).ClearContents



Je te joins également ton fichier à titre de démonstration.

En espérant avoir résolu ton problème.

Bonne soirée
Kotov
End Sub
 

Pièces jointes

Re : macro d'auto-sauvegarde et d'auto-datation

Bonjour,

Mon chef m'a demander de faire autrement (désolé pour le travail éffectué) !!

Il voudrai que lorsque l'on fait la macro Ctrl+Maj+M, le tableau qui a été rempli précèdement, se sauvegarde dans l'onglet archive correspondant a la société qui édite le document.

J'explique en plusieurs étapes :

1) Remplissage du tableau sur les 12 mois dans l'onglet Sté 1 (par exemple).
2) Une fois les 12 mois remplis, activation de la macro par les commandes : Ctrl+Maj+M.
3) Avant que la macro ne s'effectue, sauvegarder le tableau avec les valeurs dans l'onglet correspondant a Archive Sté 1 (pour notre exemple).
4) Que lorsque l'on reproduit les points 1 à 3, le document dans Archive Sté 1 ne soit pas écrasé mais ajouté à côté.

Merci pour votre aide.
 
Re : macro d'auto-sauvegarde et d'auto-datation

Bonjour MicFlo,

Dans l'immédiat, il m'est impossible de répondre à ta demande :
Je viens de déposer mon PC portable chez le réparateur.
Je suis actuellement sur le PC de mon fils qui n'est pas équipé d'Excel.

Si ta demande peut attendre une bonne semaine, je verrai ce que je peux faire, dans le cas
contraire, demandes de l'aide aux amis du forum (en restant sur ce fil bien entendu)

Un conseil en passant :
Avant de débuter un projet, définis de manière très précise les besoins du commanditaire. Quitte à être très ch...., il faut que le cahier des charges soit clairement défini !
Il n'y a rien de plus exaspérant qu'un changement de concept à la fin du projet.
Je te parle d'expérience, m'étant fait échauder plus d'une fois.

Désolé de ne pouvoir t'aider dans l'immédiat.

Bonne soirée
Kotov
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
920
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…