rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[Excel VBA] Macro enregistrement automatique

Posté par superjuju68, le jeudi 25 octobre 2007 à 09:40:00
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
Configuration: Windows 2000
Excel 2002 SP3
Répondre à superjuju68  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le jeudi 25 octobre 2007 à 10:05:53
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.


toujours zen
Répondre à gbinforme

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
superjuju68, le jeudi 25 octobre 2007 à 11:32:31
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
Répondre à superjuju68

3


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le jeudi 25 octobre 2007 à 20:31:39
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.


toujours zen
Répondre à gbinforme

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alune, le jeudi 28 février 2008 à 17:39:18
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
Répondre à Alune

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le jeudi 28 février 2008 à 18:41:17
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.


Toujours zen
Répondre à gbinforme

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Coulisfr, le vendredi 29 février 2008 à 16:32:44
Merci
J'ai réglé mon problème.
Répondre à Coulisfr

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
superjuju68, le vendredi 26 octobre 2007 à 16:38:42
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
Répondre à superjuju68

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
biseal72, le mardi 12 février 2008 à 19:04:04
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
Répondre à biseal72

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 lina, le vendredi 13 juin 2008 à 16:54:24
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
Répondre à lina