Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

enregistrer le nom du fichier excel avec nouvelle date

5 réponses
Avatar
didiersee
Bonjour =E0 tous j'ai trouv=E9 la macro suivante sur le forum (macro qui
enregistre le fichier en gardant le m=EAme nom mais en ajoutant la date
au d=E9but du nom)

Sub enregistr_auto_date()
Jr =3D Application.Text(Now(), "yymmdd")
'Jr =3D "020417"

FichierActif =3D ActiveWorkbook.Name
NouveauFichier =3D Jr & "-" & FichierActif
ActiveWorkbook.SaveAs NouveauFichier
MsgBox (NouveauFichier & " : Sauvegard=E9")
End Sub

=E7a fonctionne bien j'ai par exemple le nom du fichier
"291106-testdemacro.xls" =3D> les 6 premiers chiffres c'est la date du
jour =E0 l'enver, le probl=E8me est que si j'ex=E9cute =E0 nouveau cette
macro demain j'ai le r=E9sultat "301106-291106-testdemacro.xls" =3D> moi
je voudrai que l'ancienne date soit effac=E9e.
Comment faire?
Quelqu'un peut-il m'aider
Merci d'avance
Didier

5 réponses

Avatar
lSteph
Bonjour,

Voici qui permet de lui garder son évolution propre tout en consignant
une copie du jour mais en reprenant le même fichier, pas la copie
datée.
Ainsi cela sera automatique lors de la sauvegarde:

'''''*****dans le thisworkbook
Private Sub Workbook_BeforeSave(ByVal _
SaveAsUI As Boolean, Cancel As Boolean)

With ThisWorkbook
.SaveCopyAs Format(Now, "yymmdd") & "-" & .Name
End With

End Sub
'''''*****

A noter que dans l'exemple que tu as décrit:
Si tu reprends 291106-testdemacro.xls au lieu de testdemacro.xls
le résultat obtenu est bien normal.

L'intérêt de ce genre de macro est amha dans la plupart des cas, à
partir d'un fichier de pouvoir en enregister une version propre à un
jour donné sans perdre le fichier principal.
Ce que tu demandais est tout à fait possible mais dans le but de garder
ce type de macro valable pour n'importe quel fichier il me semblerait
tortueux de vouloir aller triturer des noms de fichiers qui au
demeurant peuvent très bien comporter des nombres et ce indépendament
d'une date, ce qui en plus devra donc être vérifié.
Donc par priorité repartir toujours du bon fichier me semble une
meilleure hypothèse.

Cdlt.

lSteph





didiersee a pensé très fort :
Bonjour à tous j'ai trouvé la macro suivante sur le forum (macro qui
enregistre le fichier en gardant le même nom mais en ajoutant la date
au début du nom)

Sub enregistr_auto_date()
Jr = Application.Text(Now(), "yymmdd")
'Jr = "020417"

FichierActif = ActiveWorkbook.Name
NouveauFichier = Jr & "-" & FichierActif
ActiveWorkbook.SaveAs NouveauFichier
MsgBox (NouveauFichier & " : Sauvegardé")
End Sub

ça fonctionne bien j'ai par exemple le nom du fichier
"291106-testdemacro.xls" => les 6 premiers chiffres c'est la date du
jour à l'enver, le problème est que si j'exécute à nouveau cette
macro demain j'ai le résultat "301106-291106-testdemacro.xls" => moi
je voudrai que l'ancienne date soit effacée.
Comment faire?
Quelqu'un peut-il m'aider
Merci d'avance
Didier


--
- -

Avatar
lSteph
...j'oubliais détail important:

la copie est écrasée tant qu'on a pas changé de jour!

donc comme on reste sur le bon fichier qui lui est enregistré
juste après le beforesave si l'on doit refaire des modifs et qu'on
enregistre à nouveau, ce sera ainsi la dernière version du jour...
...tant qu'on est le même jour donc attention au passage de minuit!

Cdlt.

lSteph

didiersee a émis l'idée suivante :
Bonjour à tous j'ai trouvé la macro suivante sur le forum (macro qui
enregistre le fichier en gardant le même nom mais en ajoutant la date
au début du nom)

Sub enregistr_auto_date()
Jr = Application.Text(Now(), "yymmdd")
'Jr = "020417"

FichierActif = ActiveWorkbook.Name
NouveauFichier = Jr & "-" & FichierActif
ActiveWorkbook.SaveAs NouveauFichier
MsgBox (NouveauFichier & " : Sauvegardé")
End Sub

ça fonctionne bien j'ai par exemple le nom du fichier
"291106-testdemacro.xls" => les 6 premiers chiffres c'est la date du
jour à l'enver, le problème est que si j'exécute à nouveau cette
macro demain j'ai le résultat "301106-291106-testdemacro.xls" => moi
je voudrai que l'ancienne date soit effacée.
Comment faire?
Quelqu'un peut-il m'aider
Merci d'avance
Didier


--
- -

Avatar
Fred
Bonjour,
Il suffit de traiter la variable FichierActif en la tronquant des 7 premiers
caractères.
Ce qui peut se faire par exemple comme ceci :

FichierActif=mid(ActiveWorkbook.Name,8,999)

Bonne continuation


"didiersee" a écrit dans le message de news:

Bonjour à tous j'ai trouvé la macro suivante sur le forum (macro qui
enregistre le fichier en gardant le même nom mais en ajoutant la date
au début du nom)

Sub enregistr_auto_date()
Jr = Application.Text(Now(), "yymmdd")
'Jr = "020417"

FichierActif = ActiveWorkbook.Name
NouveauFichier = Jr & "-" & FichierActif
ActiveWorkbook.SaveAs NouveauFichier
MsgBox (NouveauFichier & " : Sauvegardé")
End Sub

ça fonctionne bien j'ai par exemple le nom du fichier
"291106-testdemacro.xls" => les 6 premiers chiffres c'est la date du
jour à l'enver, le problème est que si j'exécute à nouveau cette
macro demain j'ai le résultat "301106-291106-testdemacro.xls" => moi
je voudrai que l'ancienne date soit effacée.
Comment faire?
Quelqu'un peut-il m'aider
Merci d'avance
Didier
Avatar
lSteph
Bonjour,
C'est précisément ce qui répondant basiquement à la demande me
semble une bien mauvaise solution.
En l'occurence appliquer directement ce que tu indiques à l'exemple
testdemacro.xls
Si l'on veut pouvoir procèder correctement , vérifier d'abord que le
fichier traité commence bien par une date
sinon donnerait un truc du genre
010107acro.xls

Savoir utiliser le bon fichier donc un seul fichier et prévoir le
savecopyas en auto lors du save avec la date qui convient me paraît
préférable.
Ainsi avant ou après enregistrement le fichier s'appelle toujours
testdemacro.xls et c'est celui-là qu'on réouvrira toujours sans avoir
à chercher au milieu de toutes les copies quelle était la date de la
dernière version.

Maintenant chacun voit midi à sa porte!

Cdlt.

lSteph



Bonjour,
Il suffit de traiter la variable FichierActif en la tronquant des 7 premi ers
caractères.
Ce qui peut se faire par exemple comme ceci :

FichierActif=mid(ActiveWorkbook.Name,8,999)

Bonne continuation


"didiersee" a écrit dans le message de news:

Bonjour à tous j'ai trouvé la macro suivante sur le forum (macro qui
enregistre le fichier en gardant le même nom mais en ajoutant la date
au début du nom)

Sub enregistr_auto_date()
Jr = Application.Text(Now(), "yymmdd")
'Jr = "020417"

FichierActif = ActiveWorkbook.Name
NouveauFichier = Jr & "-" & FichierActif
ActiveWorkbook.SaveAs NouveauFichier
MsgBox (NouveauFichier & " : Sauvegardé")
End Sub

ça fonctionne bien j'ai par exemple le nom du fichier
"291106-testdemacro.xls" => les 6 premiers chiffres c'est la date du
jour à l'enver, le problème est que si j'exécute à nouveau cette
macro demain j'ai le résultat "301106-291106-testdemacro.xls" => moi
je voudrai que l'ancienne date soit effacée.
Comment faire?
Quelqu'un peut-il m'aider
Merci d'avance
Didier


Avatar
didiersee
Merci lSteph et Fred
.Vos solutions sont parfaites pour moi, dans certaines situations celle
de
lSteph est parfaite et dans d'autres celle de Fred est parfaite aussi
tout dépend de l'usage, en tous cas merci encore à vous deux.
Cordialement


Bonjour,
C'est précisément ce qui répondant basiquement à la demande me
semble une bien mauvaise solution.
En l'occurence appliquer directement ce que tu indiques à l'exemple
testdemacro.xls
Si l'on veut pouvoir procèder correctement , vérifier d'abord que le
fichier traité commence bien par une date
sinon donnerait un truc du genre
010107acro.xls

Savoir utiliser le bon fichier donc un seul fichier et prévoir le
savecopyas en auto lors du save avec la date qui convient me paraît
préférable.
Ainsi avant ou après enregistrement le fichier s'appelle toujours
testdemacro.xls et c'est celui-là qu'on réouvrira toujours sans avoir
à chercher au milieu de toutes les copies quelle était la date de la
dernière version.

Maintenant chacun voit midi à sa porte!

Cdlt.

lSteph



Bonjour,
Il suffit de traiter la variable FichierActif en la tronquant des 7 pre miers
caractères.
Ce qui peut se faire par exemple comme ceci :

FichierActif=mid(ActiveWorkbook.Name,8,999)

Bonne continuation


"didiersee" a écrit dans le message de news:

Bonjour à tous j'ai trouvé la macro suivante sur le forum (macro qui
enregistre le fichier en gardant le même nom mais en ajoutant la date
au début du nom)

Sub enregistr_auto_date()
Jr = Application.Text(Now(), "yymmdd")
'Jr = "020417"

FichierActif = ActiveWorkbook.Name
NouveauFichier = Jr & "-" & FichierActif
ActiveWorkbook.SaveAs NouveauFichier
MsgBox (NouveauFichier & " : Sauvegardé")
End Sub

ça fonctionne bien j'ai par exemple le nom du fichier
"291106-testdemacro.xls" => les 6 premiers chiffres c'est la date du
jour à l'enver, le problème est que si j'exécute à nouveau cette
macro demain j'ai le résultat "301106-291106-testdemacro.xls" => moi
je voudrai que l'ancienne date soit effacée.
Comment faire?
Quelqu'un peut-il m'aider
Merci d'avance
Didier