XL 2019 Copier des fichiers ".txt" selon la date de modification ou création

  • Initiateur de la discussion Initiateur de la discussion Titof06
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Titof06

XLDnaute Occasionnel
Bonjour à Toutes et Tous,

Je reviens vers vous pour demander l'aide suivante.

Je dois copier des fichiers ".txt" selon une date précise.

Je détaille.
J'ai plusieurs répertoires avec une multitudes de fichiers ".txt".
Je dois récupérer tous ces fichiers et les classer dans un répertoire dédié par rapport à une date.

Est-ce qu'Excel peut me faire cela ?
Pourquoi Excel et pas un ".bat" ou ".cmd", car par la suite, je dois faire un traitement spécifique sur chaque fichier.

Je vous remercie par avance, et vous souhaite une agréable journée,

Titof06
 
Bonjour Titof06, le forum,
J'ai plusieurs répertoires avec une multitudes de fichiers ".txt".
Je dois récupérer tous ces fichiers et les classer dans un répertoire dédié par rapport à une date.

Est-ce qu'Excel peut me faire cela ?
Ce n'est pas Excel qui fait cela mais Windows.

Il suffit de donner aux fichiers un nom commençant par une date au format "aaaa-mm-jj" => "2025-10-24 Fichier1.txt"

Ils seront classés automatiquement par date dans le dossier.

A+
 
Bonjour Titof06, le forum,

Ce n'est pas Excel qui fait cela mais Windows.

Il suffit de donner aux fichiers un nom commençant par une date au format "aaaa-mm-jj" => "2025-10-24 Fichier1.txt"

Ils seront classés automatiquement par date dans le dossier.

A+
Bonjour job75,

J'ai bien dit au départ "je dois copier des fichiers venant de plusieurs répertoires".

Les noms sont formatés selon notre ERP; je ne peux donc pas intervenir sur les noms.

Sinon, je sais comment les classer, je vous remercie.

Je vous souhaite une agréable journée,

Titof06
 
Bonjour,

Je dois récupérer tous ces fichiers et les classer dans un répertoire dédié par rapport à une date.
Perso, je comprends qu'au départ tous les fichiers sont dans des dossiers différents, et qu'il faut les ventiler, chacun dans un dossier spécifique qui dépend de la date qui est associée au fichier.
me trompé-je ?

Si j'ai bon jusque là, la date en question est-elle contenue dans le du nom du fichier, ou faut-il la récupérer dans les données associées au fichier (date de création, date de modification, etc.) ?


As-tu cherché dans les sujets similaires sur le forum ?
On a eu il y a quelques jours une question pour déplacer des fichiers avec des chemins trop longs. Ça pourrait peut-être te servir de base de départ.
 
Bonjour,


Perso, je comprends qu'au départ tous les fichiers sont dans des dossiers différents, et qu'il faut les ventiler, chacun dans un dossier spécifique qui dépend de la date qui est associée au fichier.
me trompé-je ?

Si j'ai bon jusque là, la date en question est-elle contenue dans le du nom du fichier, ou faut-il la récupérer dans les données associées au fichier (date de création, date de modification, etc.) ?


As-tu cherché dans les sujets similaires sur le forum ?
On a eu il y a quelques jours une question pour déplacer des fichiers avec des chemins trop longs. Ça pourrait peut-être te servir de base de départ.
Bonjour TooFatBoy,

Oui, la question est bien par rapport aux dates des fichiers.
Les noms des fichiers sont presque similaires avec des options de localisation spécifiées dans le nom du fichier.
C'est un second traitement qui sera fait et qui fonctionne déjà.

Ce que je cherche, est bien de copier et coller des fichiers dont la date est par exemple le 23/10/2025.

Je vous souhaite une agréable fin de journée,

Titof06
 
ça ne devrait pas être compliqué pour récupérer les dates des fichiers
Code:
Dim fso As Object, f As Object
   Set fso = CreateObject("Scripting.FileSystemObject")
   For Each f In fso.GetFolder("C:\Dossier").Files
      Debug.Print f.Path, f.DateLastModified
   Next
 
Bonjour Job75; Titof06

Titof06 a écrit : "Je dois récupérer tous ces fichiers et les classer dans un répertoire dédié par rapport à une date."
Pourquoi Excel et pas un ".bat" ou ".cmd", car par la suite, je dois faire un traitement spécifique sur chaque fichier.
D'accord avec Job75 : "ce n'est pas excel qui fait cela, mais Windows"

La commande Dos ForFiles permet de déplacer ou de copier en parcourant les sous répertoires
En suite la commande Sort permet de faire une liste triée par date
For utiliser ForFiles : sur une ligne de command de la boite DOS (cmd), taper : ForFiles /? pour connaitre les possibilités.

A lire : https://stackoverflow.com/questions/46870699/forfiles-to-batch-move-rename-files-with-timestamp

Si "par la suite vous avez un traitement spécifique à faire sur chaque fichier", de quelle complexité est t'il? pouvez-vous expliciter et etes vous sûr que ce traitement est possible dans un batch DOS (un executable, ...) ?
 
Bonsoir à tous,

Je reviens moi aussi sur ce fil.

Copier des fichiers de plusieurs répertoires dans un seul n'est pas une très bonne idée car 2 fichiers peuvent porter le même nom.

Il vaut mieux lister les fichiers et créer des liens hypertextes permettant de les ouvrir, voyez cette macro dans le fichier joint :
VB:
Sub Recherche()
Dim dat As Variant, lig&, chemin$, fichier$
Do
    dat = Application.InputBox("Date recherchée :")
    If dat = False Then Exit Sub
Loop While Not IsDate(dat)
dat = DateValue(dat)
lig = 2
Rows(lig & ":" & Rows.Count).Delete 'RAZ
Cells(lig, 1) = "Liens des fichiers pour la date du " & dat
Cells(lig, 1).Font.Bold = True
Rows(1).RowHeight = 24
Do 'boucle pour traiter successivement plusieurs dossiers
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Choix du dossier"
        If .Show = False Then Exit Sub 'Annuler
        chemin = .SelectedItems(1) & "\"
    End With
    fichier = Dir(chemin & "*.txt") '1er fichier texte du dossier
    While fichier <> ""
        If DateValue(FileDateTime(chemin & fichier)) = dat Then
            lig = lig + 1
            ActiveSheet.Hyperlinks.Add Cells(lig, 1), chemin & fichier 'lien hypertexte
        End If
        fichier = Dir 'fichier suivant
    Wend
    Columns(1).AutoFit 'ajustement largeur
    If MsgBox("Autre dossier ?", vbYesNo + vbQuestion) = vbNo Then Exit Sub
Loop
End Sub
Edit : j'avais utilisé Int() pour récupérer la date, c'est mieux avec DateValue.

A+
 

Pièces jointes

Dernière édition:
Bonjour le forum,

Chez moi les liens hypertextes ouvrent les fichiers textes avec le bloc-notes.

Pour les ouvrir avec Excel on peut utiliser le clic droit, le code de la feuille :
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.CountLarge > 1 Or Target(1).Hyperlinks.Count = 0 Then Exit Sub
Cancel = True
Workbooks.OpenText Target, Local:=True 'à compléter éventuellement
End Sub
A+
 

Pièces jointes

Bonjour à tous,
Un autre moyen de récupérer des fichiers selon leur répertoire, extension et dates avec Cim_Datafile

Le code est dans la feuille, zone à renseigner :
1764085434342.png
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
1 K
Retour