VIVEZ LE
FOOTBALL !

Posez votre question Signaler

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

superjuju68 3Messages postés 25 octobre 2007Date d'inscription - Dernière réponse le 1 mars 2012 à 10:56
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
Lire la suite 

[Excel VBA] Macro enregistrement automatique »

21 réponses
Réponse
+25
moins plus
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.
racha - 9 janv. 2012 à 01:39
bonjour tt le monde,
je suis une debutante en vba et j'essaye d'automatiser un tableau de bord qui contient des données extraites d'une base de donnée qu elle meme existe sur une autre feuille du meme classeur qui contient le tableau de bord.
sur la base de données j'ai les variables suivantes: matricule, nom,pole,mois de la formation,montant de la formation,hotel,repas,billet d'avion,frais logistique.
le tableau de bord contient le mois de la formation, le pole et la consomation mensuelle
sachant que consomation= montant de la formation+hotel+repas+billet d'avion+frais logistique. je fais comment pour automatiser ce tableau de bord?
racha - 9 janv. 2012 à 01:39
merci d'avance :)
XLSuser- 1 mars 2012 à 10:56
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
Ajouter un commentaire
Réponse
+5
moins plus
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
Ajouter un commentaire
Réponse
+5
moins plus
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
ITconst - 24 janv. 2012 à 21:51
bonjour ,
jai utilisé la macro elle marche mais quand on ferme le fichier elle ne fonctionne plus apres ouverture
ITconst - 24 janv. 2012 à 21:52
comment faire donc
Ajouter un commentaire
Réponse
+5
moins plus
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.
Ajouter un commentaire
Réponse
+5
moins plus
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
Ajouter un commentaire
Réponse
+4
moins plus
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.
gbinforme- 28 févr. 2008 à 18:41
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.

Coulisfr - 29 févr. 2008 à 16:32
Merci
J'ai réglé mon problème.
telerek - 28 sept. 2009 à 16:51
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?
Ajouter un commentaire
Réponse
+4
moins plus
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
Ajouter un commentaire
Réponse
+4
moins plus
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
Ajouter un commentaire
Réponse
+4
moins plus
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 ...
Ajouter un commentaire
Ce document intitulé « [Excel VBA] Macro enregistrement automatique » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?