Trie de fichier par nom et croissant par vba

Y compris Power BI, Power Query et toute autre question en lien avec Excel
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'603
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 2 mai 2019, 17:52

re

question importante : à quoi sert de trier des fichiers ?
vu qu'on n'en lit qu'un à la fois, son nom suffit (utiliser la case de recherche de l'explorateur de fichier de Windows). Valable aussi si on cherche plusieurs fichiers

amitiés
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 2 mai 2019, 18:34

Les fichiers effectivement sont traités un par un par mon code. Mais l'ordre dans lequel est traité le fichier est extrêmement important. Par exemple, si le fichier du nom 'Fichier2' est traité avant 'Fichier1', ça va avoir des conséquences dans mes calcules. C'est pour cela que je souhaite avoir un code pour trier les fichiers d'un dossier par le 'nom" et l'ordre "croissant" dans l'explorateur de fichiers. :cry:
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'820
Appréciations reçues : 163
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 2 mai 2019, 21:00

aleX9869 a écrit :
2 mai 2019, 18:34
Les fichiers effectivement sont traités un par un par mon code. Mais l'ordre dans lequel est traité le fichier est extrêmement important. Par exemple, si le fichier du nom 'Fichier2' est traité avant 'Fichier1', ça va avoir des conséquences dans mes calcules. C'est pour cela que je souhaite avoir un code pour trier les fichiers d'un dossier par le 'nom" et l'ordre "croissant" dans l'explorateur de fichiers. :cry:
Slt aleX,
Slt jmd (°v°)° ,

oui mais là tu te casses la tête, le code que je t'ai proposé va pouvoir resoudre ton problème, il faut juste l'intégré dans ton code :mrgreen:

c.à.d
1- tu crées la liste des fichiers du dossier que tu vas choisir dans une plage/Onglet X dans ton fichier initial et tu les tries (c'est ce que le code en haut fait) (cette plage/onglet X peut être cachée si souhaité)

2- ensuite tu commences le traitement des fichiers dans l'ordre de cette plage X.

mets ton code initial et je t'adapte cette soultion si tu veux..

@ ++
À partir d'hier, j'ai décidé de ne plus expliquer les solutions proposées et de ne plus répondre aux MP!
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 3 mai 2019, 21:28

Bonjour m3ellem1 et je te remercie pour ta réponse :)

Je vois ce que tu veux dire mais je ne sais pas du tout comment m'y prendre pour insérer ton code... Penses tu qu'il serai possible d'au lieu d'utiliser une plage dans un onglet pour trier les fichiers, d'effectuer le trie et de stocker l'ordre dans une variable de type tableau ?

Mon code est ci dessous :

Sub FichierCopierColler()

Dim FSO As Object
Dim FsoRepertoire As Object
Dim FsoFichier As Object

Dim strLigne As String
Dim LienFichier As String

Dim I As Long


Set FSO = CreateObject("Scripting.FileSystemObject")
Set FsoRepertoire = FSO.getfolder("C:\") 'mettre le lien du dossier ou sont situés les fichiers txt

I = 1

For Each FsoFichier In FsoRepertoire.Files

LienFichier = FsoRepertoire & "\" & FsoFichier.Name

Open test For Input As #1

Do While Not EOF(1)

Line Input #1, strLigne
Feuil1.Cells(I, 1).Value = strLigne
I = I + 1

Loop
I = I + 1

Close #1

Next

End Sub
G
Gli73
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 3 mai 2019, 23:14

Bonjour le fil

Je me glisse dans ce fil, parce qu'il y a une information qui me manque pour comprendre le pourquoi du comment ! Autrement pour pouvoir résoudre ce problème qui pour moi n'existe pas !

@alex9869
Tu dis :
aleX9869 a écrit :
2 mai 2019, 18:34
Les fichiers effectivement sont traités un par un par mon code. Mais l'ordre dans lequel est traité le fichier est extrêmement important. Par exemple, si le fichier du nom 'Fichier2' est traité avant 'Fichier1', ça va avoir des conséquences dans mes calcules. C'est pour cela que je souhaite avoir un code pour trier les fichiers d'un dossier par le 'nom" et l'ordre "croissant" dans l'explorateur de fichiers.

ET

Je sais que je peux le faire manuellement dans l'onglet affichage de l'explorateur de fichier. Cependant, une autre personne sera amenée à utiliser mon code et pourrait par erreur trier les fichiers par "modifié le" ou encore "type" ou "Taille".


Si tu lis les fichiers directement sur le répertoire, un par un via une procédure tu peux faire le tri dans la procédure elle-même, pourquoi est il important que "une autre personne" décide de trier autrement que ce que tu as décidé ? L'explorateur de fichier reste l'explorateur de fichier ! Chacun peut décider de "voir" les informations comme cela lui est pratique... C'est à ton code de s'adapter pas à l'explorateur et encore moins à l'utilisateur d'être bridé dans sa "vision" de ton outil !

Une fois tes fichiers (tous) lus en vrac tels qu'ils sont organisés dans l'explorateur tu fais une routine de tri sur la donnée dont tu as besoin pour tes calculs...

Ou alors j'ai sauté un passage important, ma capacité de lecture en diagonale aurait-t-elle diminué à ce point ? :lol:
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 4 mai 2019, 17:19

Bonjour Gil73 et merci de t'intéresser à mon problème :)

Oui je comprends ce que tu veux dire. Je suis débutant en VBA et je pensais qu'il y avait un code pour trier les fichiers directement dans l'explorateur de fichiers... Mais effectivement de trier directement mes fichiers dans mon code est une très bonne idée qui va dans le sens de @m3ellem1. :)
Maintenant je ne sais juste pas comment y intégrer... Et d'autant plus que j'aimerais ne pas passer par une plage dans un onglet pour effectuer le tri mais plutôt par une variable de type tableau pour optimiser mon code (j'ai vu ça sur un site mais pareil je galère un peu..) ::(
G
Gli73
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 4 mai 2019, 20:37

Bonjour
aleX9869 a écrit :
4 mai 2019, 17:19
Bonjour Gil73 et merci de t'intéresser à mon problème
::D
aleX9869 a écrit :
4 mai 2019, 17:19
Oui je comprends ce que tu veux dire. Je suis débutant en VBA et je pensais qu'il y avait un code pour trier les fichiers directement dans l'explorateur de fichiers... Mais effectivement de trier directement mes fichiers dans mon code est une très bonne idée qui va dans le sens de @m3ellem1
Etre débutant n'est pas un défaut, chercher à progresser est une qualité ! ;;)
aleX9869 a écrit :
4 mai 2019, 17:19
Et d'autant plus que j'aimerais ne pas passer par une plage dans un onglet pour effectuer le tri mais plutôt par une variable de type tableau pour optimiser mon code (j'ai vu ça sur un site mais pareil je galère un peu..)
En passant par VBA il serait ridicule de passer par une plage ou juste enregistrer une macro-commande (bête et méchante) pour réaliser un tri ! Si nous passons par VBA autant tout faire "d'un seul coup" et proprement et tant qu'à faire de manière beaucoup plus rapide. Ton idée de passer par un tableau (si tu parles bien de la même chose que moi) est une excellente idée (et :appl2: pour tes investigations sur internet). Les tableaux sous VBA sont (lorsque l'on a compris le fonctionnement) très pratique et gérés de manière très rapide par l'interpréteur de commandes. Il faut donc les utiliser dès que le volume de données à traiter devient important ou pour remplacer les fonctions Excel (sur les plages justement) qui sont parfois très lentes !

Mais... Venons-en alors au fait !
Les question d'abord
1) Combien (potentiellement) peux tu avoir de fichiers à trier ? Cette question pour savoir quel genre de tri peut être utilisé !
2) Si j'ai bien compris (d'après ton extrait de code actuel) les fichiers à lire sont de fichiers de type texte (CSV ou quelque chose du genre)
3) Que faut il faire "pendant la lecture" ? Toujours d'après ton extrait de code tu recopies toutes les lignes du fichier à la suite sur un onglet... Est-ce bien ce qu'il faut faire ?

En fonction de tes réponses je pourrais adapter la mienne et répondre j'espère à ton problème ! ;;)
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 5 mai 2019, 16:21

Bonjour Gli73 :)

je te rassure, on parle bien de la même chose concernant les variables de type tableau :wink:

Alors concernant tes questions :

1) C'est entre 15 et 130 fichiers max. Et en moyenne je dirais 50 fichiers.
2) Oui effectivement c'est exactement ça, ce sont des fichiers txt et je recopie ligne par ligne du fichier txt dans un onglet excel :)
3) Je pense que la réponse au point 2 répond à ta question 3 :lol: . Et l'idée c'est d'effectuer cette opération (copier coller mes fichiers txt dans un onglet excel) sur des fichiers trier par "nom" et ordre "croissant" (désolé si je me répète :lole: )

En tout les cas, merci pour ton aide :)
G
Gli73
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 5 mai 2019, 19:24

Bonjour le fil

Ok !

Voyons les chose dans l'ordre !
Peux tu reformuler un peu ton besoin :
aleX9869 a écrit :
5 mai 2019, 16:21
C'est entre 15 et 130 fichiers max. Et en moyenne je dirais 50 fichiers.
ok pour le nombre ! peu importe d'ailleurs, il s'agit juste de savoir si il y en a UN ou PLUS !
Cependant il faudrait en connaître la forme (nombre de colonne, type des données
Un exemplaire serait le bienvenue !!!
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 6 mai 2019, 09:37

Bonjour Gil

Les fichiers sont des fichiers txt, le nombre de ligne dans le fichier txt est variables dans chaque fichier (c'est pour ça que ça sert pas à grand chose de t'en montrer un..) et les données à l'intérieur c'est des lettres, des chiffres et des signes. :)

Mais à quoi ça sert de savoir ça si on veut juste trier les fichiers en fonction de leur nom ? :lole:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message