Amélioration macro, imporation de fichiers txts
Résolu
kgigant
Messages postés
202
Date d'inscription
Statut
Membre
Dernière intervention
-
kgigant Messages postés 202 Date d'inscription Statut Membre Dernière intervention -
kgigant Messages postés 202 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Ci-dessus, j'ai une macro qui importe des fichiers txts d'un dossier vers mon classeur Excel. Lorsque je lance la macro les fichiers se rangent dans l'ordre croissant par rapport à leurs noms sur ma feuille excel
Est-il possible de rajouter une ligne de code qui permettre de ranger les fichier txts dans mon classeur en fonction de leurs date de modification ?
ex : le fichier le plus ancien se range en A1
...
le fichier le plus récent se range en A....
précision : Les fichiers txts sont classé par rapport à leur date de modif dans le fichier source, du plus ancien au plus récent
voici la macro:
Sub importfichiertxt()
Dim Fichier As String, Chemin As String
Dim i As Long
'Répertoire contenant les fichiers
Chemin = "N:\Departements\export"
Fichier = Dir(Chemin & "\*.txt")
'Boucle sur les fichiers
Do While Fichier <> ""
i = Range("A65536").End(xlUp).Row + 1
ImportText Chemin & "\" & Fichier, Cells(i, 1)
Fichier = Dir
Loop
End Sub
Sub ImportText(NomFichier As Variant, Cible As Range)
Dim QT As QueryTable
Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
NomFichier, Destination:=Cible)
With QT
'Définit les séparateur de colonnes dans le fichier txt
.TextFileOtherDelimiter = ";"
.TextFileSemicolonDelimiter = True
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.Refresh
End With
End Sub
Merci
Ci-dessus, j'ai une macro qui importe des fichiers txts d'un dossier vers mon classeur Excel. Lorsque je lance la macro les fichiers se rangent dans l'ordre croissant par rapport à leurs noms sur ma feuille excel
Est-il possible de rajouter une ligne de code qui permettre de ranger les fichier txts dans mon classeur en fonction de leurs date de modification ?
ex : le fichier le plus ancien se range en A1
...
le fichier le plus récent se range en A....
précision : Les fichiers txts sont classé par rapport à leur date de modif dans le fichier source, du plus ancien au plus récent
voici la macro:
Sub importfichiertxt()
Dim Fichier As String, Chemin As String
Dim i As Long
'Répertoire contenant les fichiers
Chemin = "N:\Departements\export"
Fichier = Dir(Chemin & "\*.txt")
'Boucle sur les fichiers
Do While Fichier <> ""
i = Range("A65536").End(xlUp).Row + 1
ImportText Chemin & "\" & Fichier, Cells(i, 1)
Fichier = Dir
Loop
End Sub
Sub ImportText(NomFichier As Variant, Cible As Range)
Dim QT As QueryTable
Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
NomFichier, Destination:=Cible)
With QT
'Définit les séparateur de colonnes dans le fichier txt
.TextFileOtherDelimiter = ";"
.TextFileSemicolonDelimiter = True
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.Refresh
End With
End Sub
Merci
A voir également:
- Amélioration macro, imporation de fichiers txts
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
3 réponses
Bonjour,
FileDateTime("c:\tmp\test.txt") te ramène date-heure de la dernière modification.
A ajouter dans une autre colonne et trier dessus.
eric
FileDateTime("c:\tmp\test.txt") te ramène date-heure de la dernière modification.
A ajouter dans une autre colonne et trier dessus.
eric
Daccord donc si je veux rajouter cette ligne en colonne P dans ma macro je dois faire quoi ?
J'ai du mal a comprendre comment et ou exploiter cette formule
J'ai du mal a comprendre comment et ou exploiter cette formule
C'est exactement ça, je l'ai modifié légerement,
Cells(i + 5, "P") = FileDateTime(Chemin & "\" & Fichier)
je l'ai décaller à i+ 5 car ce sont selement les données de la 5° à la 29° ligne du fichier txt que je vais garder pour exploiter.
J'aimerais donc écrire:
Cells(i + 5:i + 29, "P") = FileDateTime(Chemin & "\" & Fichier)
mais ca génere un blocage tu serais l'écrire correctement ?
Cells(i + 5, "P") = FileDateTime(Chemin & "\" & Fichier)
je l'ai décaller à i+ 5 car ce sont selement les données de la 5° à la 29° ligne du fichier txt que je vais garder pour exploiter.
J'aimerais donc écrire:
Cells(i + 5:i + 29, "P") = FileDateTime(Chemin & "\" & Fichier)
mais ca génere un blocage tu serais l'écrire correctement ?
1 fichier = 1 date de modification = 1 cellule résultat. on est d'accord
J'aimerais juste recopier ce resultat dans les 23 cellules suivantes.
ex: ma première date s'inscrit en P7--> elle se recopie jusqu'à P30
ma deuxième date s'inscrit en P36--> elle se recopîe jusqu'en P59
.......
Pour ensuite tout filtrer remettre dans l'ordre croissant et lancer ma macro suivante
J'aimerais juste recopier ce resultat dans les 23 cellules suivantes.
ex: ma première date s'inscrit en P7--> elle se recopie jusqu'à P30
ma deuxième date s'inscrit en P36--> elle se recopîe jusqu'en P59
.......
Pour ensuite tout filtrer remettre dans l'ordre croissant et lancer ma macro suivante
Peu etre que ce que je demande n'est pas forcément lié avec ma première macro, il existe peut etre une macro qui chercherai toutes les valeurs en colonne P, si elle en trouve une alors elle la copie sous les 23 cellues du dessus
ex : elle trouve une valeur en P6, elle copie cette valleur jusqu'a P29
elle trouve une valeur en P32, elle copie cette valeur jusqu'à P55
ex : elle trouve une valeur en P6, elle copie cette valleur jusqu'a P29
elle trouve une valeur en P32, elle copie cette valeur jusqu'à P55
Essaie de prendre pour habitude de dire ce que tu veux plutôt que de mettre une ligne de code toute fausse qui ne veut rien dire.
Cells(i, "P").Resize(23) = FileDateTime(Chemin & "\" & Fichier)
Mais je ne vois pas où tu vas passer de la ligne 29 à la ligne 55 puisque tu te bases sur la dernière ligne de la colonne A.
eric
Cells(i, "P").Resize(23) = FileDateTime(Chemin & "\" & Fichier)
Mais je ne vois pas où tu vas passer de la ligne 29 à la ligne 55 puisque tu te bases sur la dernière ligne de la colonne A.
eric