[Excel VBA] Macro enregistrement automatique [Résolu/Fermé]

Messages postés
3
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
26 octobre 2007
- - Dernière réponse :  GP - 3 mars 2017 à 09:52
Bonjour à tous,

Je débute en VB et je cherche un moyen pour intégrer un bouton d'enregistrement automatique dans une feuille Excel. Ce bouton permettrait d'enregistrer automatiquement une copie de la feuille active dans un répertoire donné en ajoutant au nom initial du fichier la date et l'heure, du style "mon_fichier_24102007_0830.xls"

J'ai trouvé sur le net une macro qui a l'air de correspondre mais je ne sais pas comment l'intégrer dans VB ni comment afficher le bouton correspondant dans la feuille:

Dim Chemin As String, Fichier As String
Chemin = "C:\temp"
'Ajoute la date du jour et l'heure dans le nom du fichier
Fichier = "NomClasseur_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".xls"

D'avance merci pour vos réponses
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3654
48
Merci
bonjour

Cette macro devrait faire ce que tu veux et elle met la sauvegarde dans le même répertoire.
Public Sub CommandButton1_Click() 'copie sauvegarde classeur
Dim nom As String
    nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.Name
    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
    rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
End Sub

Pour l'intégrer tu ouvres VBA (alt + F11) puis la fenêtre projet (ctrl + R) puis ta feuille concernée et tu colles la macro.

Ensuite tu repasses sur ta feuille, tu fais un clic droit sur la barre menu dans un espace libre, tu choisis formulaire puis l'icône bouton
Avec la petite croix tu te dessines un bouton où tu veux et tu mets le libellé voulu puis avec clic droit tu choisis affecter une macro et tu valides ta macro qui s'affiche.
La fonction est alors utilisable.

Dire « Merci » 48

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60654 internautes nous ont dit merci ce mois-ci

merci d'avance :)
XLSuser
Messages postés
20
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
30 mars 2012
3 -
Bonjour,

J'ai inserer le marco et ca fonctionne super mais j'ai une autre question. Serait-il possible de pouvoir saisir la suite du nom de fichier par exemple : nomduclasseur_Rakoto (rakoto est le texte à saisir)

Merci beaucoup

Bruno
papyjlsn
Messages postés
6
Date d'inscription
mardi 19 février 2013
Statut
Membre
Dernière intervention
15 janvier 2014
-
Bonjour

J'ai utilisé cette macro et cela marche super bien.
Toutefois j'aurais aimé que cette sauvegarde se face dans un autre répertoire.
Appelons le par exemple (sav_xls)
Cela est il possible.

Merci d'avance.
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3654 -
Bonjour,

Pour la faire dans un autre répertoire, tu remplaces la partie soulignée par le chemin de ton répertoire par exemple : "F:\mes_sauvegardes"
   ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
Messages postés
3
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
26 octobre 2007
17
10
Merci
Merci gbinforme

J'ai rajouté la date et l'heure dans la macro, redirigé la sauvegarde vers un répertoire "old" et ca marche nickel sauf pour l'heure: s'il est 11h06 par exemple, le nom de fichier sera 25-10-2007_116_[nomfichier]. Comment faire pour rajouter le '0' des dizaines dans ce cas précis?
nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & Hour(Time) & Minute(Time) & Second(Time) & "_" & ActiveWorkbook.Name

Autre question sans abuser de ta patience: je souhaiterais inverser le nom du fichier pour obtenir quelque chose de la forme [nomfichier_sans_extension_xls]_[date]_[heure]_[.xls]. Et si je mets ActiveWorkbook.Name en premier, j'ai directement l'extension xls rattachée ce qui donne [nomfichier_avec_extension_xls]_date_heure

D'avance merci
9
Merci
bonjour mon problème est le suivant:
étant à la recherche d'un logiciel de facturation pour un grossiste et ne trouvant aucun logiciel où je puisse rajouter deux taxes supplémentaire je me suis tourner sur excel.
j'ai bien réussi la partie mathématique mais j'aimerai rajouter un bouton impression et surtout un bouton d'enregistrement. ce dernier une fois cliquer permettrai d'enregistrer la facture avec un nom unique. j'ai bien essayer les methodes ci dessus mais cela ne marche pas. j'utilise office 2007 et je débute tout juste avec VB. si quelqu'un avais la solution.
8
Merci
Je ne suis pas un as de excel aussi ai je telecharger une macro qui per de convrtir le chiffres en lettre sous excel 2003
Mais entre temps notre informaticien a bascule sur excel 2007 comment retrouver le macros complementaires et reactiver cette macro pour pouvoir continuer a l'utileser
Messages postés
8
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
15 décembre 2009
8
8
Merci
Bonjour à tous ,
Je souhaitai savoir si il était possible d'adapter cette macro, pour qu'elle enregistre une seule feuille du classeur.
Par exemple uniquement la feuil2 ?
Merci
----------------------------

Public Sub CommandButton1_Click() 'Worksheet Backup Copy
Dim nom As String
nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & "_" & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") & ".xls"
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\old\" & nom
rep = MsgBox("Worksheet saved on 'old' sub-directory under name: " & nom, vbYes + vbInformation, "Worksheet Backup Copy")
End Sub
Messages postés
3
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
26 octobre 2007
17
7
Merci
Bonjour,

encore merci, ca fonctionne parfaitement.
Public Sub CommandButton1_Click() 'Worksheet Backup Copy
Dim nom As String
    nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & "_" & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") & ".xls"
    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\old\" & nom
    rep = MsgBox("Worksheet saved on 'old' sub-directory under name: " & nom, vbYes + vbInformation, "Worksheet Backup Copy")
End Sub
bonjour ,
jai utilisé la macro elle marche mais quand on ferme le fichier elle ne fonctionne plus apres ouverture
comment faire donc
7
Merci
j'ai creer un formulaire pour entrer des données mais j'ai un probleme de sauvegarde de ces donnees, j'ai travailler avec excel2003
Messages postés
3
Date d'inscription
vendredi 4 septembre 2009
Statut
Membre
Dernière intervention
28 septembre 2009
7
7
Merci
bonjour à tous,

j'aurais besoin d'un coup de main. J'ai un logiciel de mesure qui m'exporte sur un fichier excel les donnés de mon essai, il ouvre toujours le même fichier en écrasant les lignes de l'essais précédent. Du coup pour stocker ces données je fais un copier coller dans un autre fichier en colant les lignes les unes à la suite des autre. Mais j'imagine qu'il y a un moyen simple pour m'affranchir de ce copier coller manuel et pour automatiser tous ça. Mais je n'ai pas la moindre idée de comment faire. Si quelqu'un pouvait m'indiquer une direction pour mes recherches ou même une solution. J'imagine que pour quelqu'un qui touche un peu c'est enfantin mais bon ...
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3654
5
Merci
bonjour

Comment faire pour rajouter le '0' des dizaines dans ce cas précis?
pour cela il faut utiliser la commande format qui permet de mettre les éléments avec un nombre fixe de caractères en sachant qu'il faut la paramétrer en anglais (Day,Year,etc).

: je souhaiterais inverser le nom du fichier pour obtenir quelque chose de la forme [nomfichier_sans_extension_xls]_[date]_[heure]_[.xls]
pour cela on peut utiliser la commande left qui sélectionnes la gauche du nom,
et comme il faut donner la longueur, on prend la longueur (len) du nom - la longueur de l'extension.
Cela devrait donner :
    nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & Format(Date, "_dd-mm-yyyy") & Format(Time, "_hhmmss") & ".xls"

J'ai forcé un peu l'utilisation de format en rajoutant les "_" que tu voulais pour te faire voir les possibilités mais tu peux faire comme tu avais fait qui est un peu plus long mais plus clair.

Autre question sans abuser de ta patience
Quand tu veux car c'est bien le but du forum d'échanger nos différentes connaissances et tu vas peut-être répondre demain à une de mes questions.
Salut,
excuses moi du dérangement occasionnel. En fait , j'ai remarqué que tu donnes des solutions intéressantes. Sur ce, j'aurais juste voulu te demander quelques questions et je te remercie d'avance.
Dans le cadre des travaux que je suis en train de faire, j'ai besoin de réaliser un bouton qui colorie une cellule si son contenu est changé et un autre bouton qui réinitialise le contenu de la cellule par sa valeur initiale.
En fait, au début le contenu de ma cellule est une formule, le bouton de changement de couleur me permet de détecter que cette formule est changée par une valeur constante.

Merci d'avance
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3654 > Alune -
bonjour Alune

j'ai besoin de réaliser un bouton qui colorie une cellule si son contenu est changé

Pourquoi faire compliqué en mettant un bouton pour changer la couleur d'une cellule alors que tu le fais avec un clic droit ?

un autre bouton qui réinitialise le contenu de la cellule par sa valeur initiale

La valeur initiale d'une cellule est vide ?

le bouton de changement de couleur me permet de détecter que cette formule est changée

Un bouton ne détecte rien du tout et il n'y a que les macros événementielles pour détecter des mises à jour ou autres.

En somme je crois que tu devrais clarifier ton besoin, car à mon avis, tu n'as pas besoin de boutons mais probablement d'une mise en forme conditionnelle et/ou d'une macro événementielle.

> gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
-
Merci
J'ai réglé mon problème.
Bonjour,

J'ai constaté que tu connaissais pas trop mal Excel et je cherche désespérément à faire quelque chose et je n'y arrive pas.

Je voudrai pouvoir créer un bouton sous Excel qui en cliquant dessus Enregistre mon application et la ferme sans demande de confirmation.

Le problème c'est que je n'y connais rien du tout en VBA.

Tu peux m'aider?