Afficher la date dans l'intitulé du fichier que l'on enregistre sous

Bonjour à tous,

A la fin de mon programme, j'enregistre sous trois fichiers avec comme objectif de concaténer leur nom et la date du jour dans l'intitulé. Suite à des recherches j'ai obtenu l'écriture suivante :

projets.SaveAs "Y:\Exercice 2017\Frais Généraux\A - Mensuel_Trimestriel\12 - Décembre\G - TNE\TNE-dossier de travail" & "\" & "Extraction frais projets par direction" & Format(Date, "yyyymmdd")

run.SaveAs "Y:\Exercice 2017\Frais Généraux\A - Mensuel_Trimestriel\12 - Décembre\G - TNE\TNE-dossier de travail" & "\" & "Extraction frais run par direction" & Format(Date, "yyyymmdd")

total.SaveAs "Y:\Exercice 2017\Frais Généraux\A - Mensuel_Trimestriel\12 - Décembre\G - TNE\TNE-dossier de travail" & "\" & "Extraction frais totaux par direction" & Format(Date, "yyyymmdd")

L'enregistrement se fait bien si j'enlève la fonction "Format" mais avec cette fonction le programme s'arrète, comme si la fonction "& Format(Date, "yyyymmdd")" ne fonctionnait pas. Dois-je dimensionner la Date, ou faire un autre réglage ?

Merci par avance !

Jean

Bonjour,

Je ne sais pas pourquoi ta macro bug mais je serai d'avis de renseigner la date dans un format et de la remplacer dans ton code.

dim dj as string
dj  = Format(Date, "yyyymmdd")

projets.SaveAs "Y:\Exercice 2017\Frais Généraux\A - Mensuel_Trimestriel\12 - Décembre\G - TNE\TNE-dossier de travail" & "\" & "Extraction frais projets par direction" & dj
run.SaveAs "Y:\Exercice 2017\Frais Généraux\A - Mensuel_Trimestriel\12 - Décembre\G - TNE\TNE-dossier de travail" & "\" & "Extraction frais run par direction" & dj
total.SaveAs "Y:\Exercice 2017\Frais Généraux\A - Mensuel_Trimestriel\12 - Décembre\G - TNE\TNE-dossier de travail" & "\" & "Extraction frais totaux par direction" & dj

Je ne suis pas sur de moi tu me dit.

Cdlt,

Bonjour, Salut VH_AE !

Il y a certainement intérêt à utiliser des variables...

mais est-ce le même classeur que tu enregistres, comme tu semblais le dire :

j'enregistre sous trois fichiers

ou 3 classeurs différents ?

Que sont projets, run, total ? Des variables de type Workbook ?

Bonjour Jean,

Ce n'est pas la fonction "format" qui pose problème dans tes noms de classeur.

As-tu vérifier que les dossiers existent et sont accessibles?

Cordialement

Gérard

Merci pour vos réponses !

VH_AE, malheureusement j'ai essayé avec ton écriture mais le même problème surgit comme je vous mets en copie

vba

].

Mferrand, j'enregistre trois classeurs différents, désolé par "fichier", j'entendais classeur.

GVIALLES, oui j'ai bien vérifié car si j'enlève la partie Format dans l'intitulé mon programme fonctionne bien et les 3 classeurs s'enregistrent bien.

Que sont projets, run, total ? Des variables de type Workbook ?

,

Oui ils sont de type workbook.

Vous pensez que mettre des variables peut changer la donne ? ou Seulement rendre plus lisible mon programme ?

Re,

Les deux !

Mettre ton chemin en variable t'éviterait des répétitions. Même chose pour la date. Et si une erreur cachée elle apparaîtra plus facilement...

NB-Dans le code que tu as cité, il manque l'extension des classeurs (qui peut être mise automatiquement par Excel, mais...)

Cordialement.

Je vous mets le code complet avec une tentative d'amélioration de la lisibilité.

"Projets", "run" et "total" correspondent aux trois classeurs dans le lequel je fais des modifications et que j'enregistre sous à la fin avec la date dans l'intitulé.

N'hésitez pas à ma demander si ce n'est pas claire.

Merci bcp !

Sub copy()

Dim projets As Workbook
Dim run As Workbook
Dim total As Workbook
Dim dj As String
Dim chemin As String

chemin = "Y:\Exercice 2017\Frais Généraux\A - Mensuel_Trimestriel\12 - Décembre\G - TNE\TNE-dossier de travail\"
Set dj = Format(Date, "yyyymmdd")

Set projets = Application.Workbooks.Open(chemin & "Extraction frais projets.xls")
Set run = Application.Workbooks.Open(chemin & "Extraction frais run.xls")
Set total = Application.Workbooks.Open(chemin & "Extraction frais totaux.xls")

ThisWorkbook.Worksheets("TNE PROJETS").Cells.copy projets.Sheets("ZFIGL_ANALYSIS_PATTERN").Range("A1")
ThisWorkbook.Worksheets("TNE RUN").Cells.copy run.Sheets("TNE RUN").Range("A1")
ThisWorkbook.Worksheets("TNE RUN RECURRENT").Cells.copy run.Sheets("TNE RUN recurrent").Range("A1")
ThisWorkbook.Worksheets("TNE RUN SPE").Cells.copy run.Sheets("TNE RUN spe").Range("A1")
ThisWorkbook.Worksheets("TNE TOTAL").Cells.copy total.Sheets("TNE total").Range("A1")

projets.SaveAs chemin & "Extraction frais projets par direction_" & dj & ".xls"
run.SaveAs chemin & "Extraction frais run par direction_" & dj & ".xls"
total.SaveAs chemin & "Extraction frais totaux par direction_" & dj & ".xls"

End Sub

Bonsoir Jean,

J'ai en partie testé ton code et il me semble correct sauf le

Set dj = Format(Date,"yyyymmdd")

à remplacer par

dj = Format(Date,"yyyymmdd")

et dans les saveas, de spécifier le format puisque tu es en EXCEL 2007 et que tu veux sauvegarder en format antérieur (constante xlExcel9795?) .

Sinon, je ne vois pas...peut-être la longueur de tes noms de fichiers...essaye de les raccourcir de 7 caractères au cas où.

Cordialement

Gérard

Bonsoir Gérard,

Merci pour ton aide, j'ai changé pour le dj mais la requête Format ne fonctionne pas, un message d'erreur s'affiche disant : " Erreur de compilation : Nombre d'arguments incorrect ou affectation de propriété incorrecte".

Je me renseigné sur cette requête mais je ne parviens pas à trouver mon erreur, Est-ce mon sytème qui ne reconnait pas le "yyyymmdd" ?

Et en fait j'ai réalisé que mon fichier sur lequel j'ecris mon code est en version 97-2003 donc je souhaite rester sur ce format, dois-je changer quelque chose sur le "Saveas" ?

Merci,

jean

Jean,

Lorsque je compile ton code, je n'obtiens pas ce message. Es-tu sous Windows ou MACOS?

Autre idée : essaye : dj = format(now(), "yyyymmdd")

Cordialement,

Gérard

Non je suis bien sur Windows, mais j'ai fini par contourner le problème en écrivant la date sur une cellule de ma page excel mais c'est un petit peu moins propre.

Re Bonjour

Merci vos aides hier hier, mon programme fonctionne bien !

Dans la prolongation de ce programme je me permets de vous poser un petite question qui concerne les liens.

Dans la suite de mon programme j'ouvre 3 classeurs (je te mets des noms de fichiers qui simplifient) :

  • "TNE 1" lié a "extraction 1_old"
  • "TNE 2" lié a "extraction 2_old"
  • "TNE 3" lié a "extraction 3_old"

Mon objectif est de changer ces liaisons avec respectivement le classeur :

  • "extraction 1_new" pour TNE 1
  • "extraction 2_new" pour TNE 1
  • "extraction 3_new" pour TNE 1

Je mets ce que j'ai écris qui devrait marcher mais qui malheureusement bloque...

projetsvf.ChangeLink Name:=chemin_old & "Extraction frais projets par direction" & d_jmoinsun & ".xls", NewName:=chemin & "Extraction frais projets par direction" & dj & ".xls"

runvf.ChangeLink Name:=chemin_old & "Extraction frais run par direction" & d_jmoinsun & ".xls", NewName:=chemin & "Extraction frais run par direction" & dj & ".xls"

totalvf.ChangeLink Name:=chemin_old & "Extraction frais totaux par direction" & d_jmoinsun & ".xls", NewName:=chemin & "Extraction frais totaux par direction" & dj & ".xls"

projetsvf, runvf et totalvf correspondent aux classeurs où je veux changer les liens.

Merci pour votre aide, n'hésitez pas a me demander si ce n'est pas claire

Jean

Bonjour,

Si les noms sont bons, ça devrait fonctionner ! Fais afficher (message ou autre) les noms générés par ton code pour vérifier qu'ils sont conformes.

Cordialement.

Rechercher des sujets similaires à "afficher date intitule fichier que enregistre"