Aide sur macro excel - je débute

Bonjour,
Je cherche à obtenir ce résultat :
je clique sur le bouton “ok” et le document est enregistré sous le nom "détails [contenu de la cellule B12] " et fermé automatiquement.
J’ai trouvé à enregistrer automatiquement et à fermer, mais seulement avec un nom complet. Comment faire intervenir le contenu d’une cellule dans le nom du fichier ?

ma ligne de commande :

ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS MACROS\details.xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close

MyFileName = "C:\WINDOWS\Bureau\TESTS MACROS\details " & Range("B12").Value & ".xls"

ActiveWorkbook.SaveAs Filename:=MyFileName _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close

merci !
:jap:

Arf, ça fonctionne très bien pour des nombres ou du texte, mais pas pour les dates :frowning:
Or, c’est justement ça dont j’ai besoin…
J’ai essayé en changeant le format de date, mais rien à faire :sweet:
Quelqu’un a une idée ??

Tu veux la date sous quelle forme? (jour, mois, année, heure, …?)
C’est la date de l’instant ou une autre date?

C’est la date figurant dans une case (sur un tableau de planning), donc il faut que cela fonctionne avec toutes les dates
Pas d’heure, seulement jour-mois-année

recupere la valeur de la date contenu par la cellule et enregistre là sous forme de string que tu pourra ajouter à ton nom de fichier.


Dim filedate As String
    
filedate = Range("B2").Value

Merci le poilu, mais il y a toujours un pb:
Lorsque j’intègre filedate au nom du fichier (avec la date 16-sept-05)

ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS MACROS\details"&filedate&.xls"

A l’exécution de la macro, j’ai le message d’erreur :

“erreur d’exécution ‘1004’;
Microsoft excel ne peut accéder au fichier
‘C:\window\bureau\tests macros\détails 16/09’. Plusieurs raisons possibles :
Le nom du fichier ou le chemin n’existe pas”
:??:

Le problème vient des "/". Essaie ceci :


Dim filedate, jour, mois, annee As String
   
 filedate = Range("B2").Value
 
 jour = Left(filedate, 2)
 mois = Mid(filedate, 4, 2)
 annee = Right(filedate, 4)

 filedate = jour & "-" & mois & "-" & annee

 ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS\MACROS\details"&filedate&.xls" 

Au temps pour moi :
Je me suis trompé de message d’erreur ( à force de faire des tests dans tous les sens …)
Donc le message d’erreur (qui est le même avec les 2 solutions que tu me proposes) :
"erreur de compilation :
le caractère de déclaration de type ne correspond pas au type de données déclaré

:neutre: :??: :heink:

Quand tu fais un débogage, il s’arrête à quelle ligne?

ici :
ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS\MACROS\details" & filedate&.xls_
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close

la partie en bleu est en surbrillance

met un espace entre les & :

& filedate &

Remplace : ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS\MACROS\details" & filedate&.xls_
par:ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS\MACROS\details" & filedate & ".xls"

et ça devrait rouler

Bon, après ces quelques rectifications, le format de date a effectivement changé, mais toujours un message d’erreur :
" Erreur d’exécution ‘1004’ :
Excel ne peut accéder au fichier
‘C:\windows\bureau\tests macro`\details16-09-9’.Plusieurs raisons possibles :
Le nom du fichier ou le chemin n’existe pas.

Je vous mets la totalité de la ligne de commande :

Sub filedate()
Dim filedate, jour, mois, annee As String

filedate = Range("A1").Value

jour = Left(filedate, 2)
mois = Mid(filedate, 4, 2)
annee = Right(filedate, 4)

filedate = jour & "-" & mois & "-" & annee

ActiveWindow.WindowState = xlMinimized
Windows("details vierge.xls").Activate
ActiveWindow.WindowState = xlMaximized
ChDir "C:\WINDOWS\Bureau\TESTS MACROS"

ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS MACROS\details" & filedate & ".xls"

ActiveWindow.Close

End Sub

Au debogage, la ligne :
ActiveWorkbook.SaveAs FileName:=“C:\WINDOWS\Bureau\TESTS MACROS\details” & filedate & “.xls” est en surbrillance.
Peut-être faut-il créer le fichier avec le bon nom avant d’enregistrer :??:

Merci beaucoup pour votre aide en tout cas :super:

Essaie comme ça :

Sub filedate()
Dim filedate, jour, mois, annee As String

filedate = DatePart("d",Range("A1").Value) & "-" & DatePart("m",Range("A1").Value) & "-" & DatePart("yyyy",Range("A1").Value)

ActiveWindow.WindowState = xlMinimized
Windows("details vierge.xls").Activate
ActiveWindow.WindowState = xlMaximized
ChDir "C:\WINDOWS\Bureau\TESTS MACROS"

ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\Bureau\TESTS MACROS\details " & filedate & ".xls"

ActiveWindow.Close

End Sub

:super:
ça fonctionne, merci !
:jap:

Bon, décidément, à chaque nouvelle étape un nouveau problème :
Je voudrais maintenant automatiser l’enregistrement des fichiers avec le nom+date .
J’ai donc essayé de mettre en place un compteur à additionner à la ligne correspondant à chaque date.
Mon programme :
Application.Run “‘planning general.xls’!opendetails”
Range(“A1”).Select
ActiveCell.FormulaR1C1 = “=’[planning general.xls]Feuil1’!R3c1”

Application.Run “‘details vierge.xls’!savefiledate”

Il faudrait donc que la partie en bleu soit r(3+X), x étant une variable allant de 0 à 365.
Mais comment établir cette commande ?
J’ai essayé avec
for counter = 0 to 365 step 1
mais je ne sais pas comment additionner counter avec R3 :??:

Je ne sais pas si ma requête est compréhensible …

Il va vraiment falloir que je m’achète un bouquin sur VBA …

Salut,
Si j’ai bien compris tu veux la date du jour dans le nom du fichier enregistré.

Pour cela utilise la procédure de Takama et mets dans la cellule A1 la formule =MAINTENANT()
Tu auras ainsi toujours la date courante en A1

Bonne chance
@+

Non, ça c’est déjà fait.
Mais du coup, cela entraine la création de 365 fichiers (1 par jour)
C’est cette création que je veux automatiser.
Si je pars du 1erjanvier, je voudrais que, en partant de la cellule A3 (donc R3C1), le programme crée automatiquement le nom de fichier avec le contenu de la cellule R3C1 (ca c’est fait), puis R3+1C1, R3+2C1 ,… Jusqu’à R3+365C1.
Donc un "for counter = 1 to 365 "
me semblait approprié, mais je n’arrive pas à intégrer l’addition (R3+counterC1).