Trie de fichier par nom et croissant par vba

Y compris Power BI, Power Query et toute autre question en lien avec Excel
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 26 avril 2019, 11:40

Bonjour à tous,

Dans l'explorateur de fichier, je cherche à trier les fichiers d'un dossier par "nom" et "croissant" en utilisant VBA.

Cela fait plusieurs jours que je recherche une solution sans succès et je commence un peu à désespérer...

Je vous remercie par avance pour votre aide.
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'792
Appréciations reçues : 160
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 26 avril 2019, 11:54

Slt alex,

à tester et à adapter :mrgreen:
Option Explicit
Sub Test()
Dim FNames As String
Dim arr()
Dim i As Long, j As Long

ReDim arr(1000) 'définir un nombre de fichiers supérieur au nombre possible
FNames = Dir("C:\temp\*.xls") 'définir le chemin
Do Until FNames = ""
arr(i) = FNames
i = i + 1
FNames = Dir
Loop
ReDim Preserve arr(i)
TriRapid arr(), LBound(arr), UBound(arr)
For j = 0 To i
Cells(j + 1, 2) = arr(j)
Next

End Sub


Private Sub TriRapid(strArray(), intBottom As Integer, intTop As Integer)
Dim strPivot As String, strTemp As String
Dim intBottomTemp As Integer, intTopTemp As Integer
intBottomTemp = intBottom
intTopTemp = intTop
strPivot = strArray((intBottom + intTop) \ 2)
While (intBottomTemp <= intTopTemp)
While (strArray(intBottomTemp) < strPivot And intBottomTemp < intTop)
intBottomTemp = intBottomTemp + 1
Wend
While (strPivot < strArray(intTopTemp) And intTopTemp > intBottom)
intTopTemp = intTopTemp - 1
Wend
If intBottomTemp < intTopTemp Then
strTemp = strArray(intBottomTemp)
strArray(intBottomTemp) = strArray(intTopTemp)
strArray(intTopTemp) = strTemp
End If
If intBottomTemp <= intTopTemp Then
intBottomTemp = intBottomTemp + 1
intTopTemp = intTopTemp - 1
End If
Wend
If (intBottom < intTopTemp) Then TriRapid strArray, intBottom, intTopTemp
If (intBottomTemp < intTop) Then TriRapid strArray, intBottomTemp, intTop
End Sub

a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 26 avril 2019, 12:16

Salut,

Tout d'abord merci de ta réponse.
Etant novice en vba, peux tu m'indiquer les parties de ton code à modifier (hormis le chemin bien évidemment :mrgreen: ) car en lançant ton code rien ne se passe..

Merci d'avance pour ta réponse.
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'792
Appréciations reçues : 160
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 26 avril 2019, 12:31

Re,
si rien ne se passe c'est déjà pas mal :mrgreen:
non mais il faut juste indiquer le chemin, j'ai limiter la recherche à des fichier xls et peut être qu'il y a pas de fichier xls dans le chemin indiqué :D

tu peux faire comme ca pour afficher tout genre de fichier:
FNames = Dir("C:\temp\*") 'définir le chemin 

sinon montre moi ce que t'as mis comme chemin ;;)
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 26 avril 2019, 12:58

Il n'y a pas de problème au niveau du lien, j'ai lancé pas à pas le code et il lit bien les fichiers. Cependant rien ne se passe. J'ai trier mes fichiers dans mon dossier par "modifié le", je lance le code et rien n'a bougé... ::(
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'792
Appréciations reçues : 160
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 26 avril 2019, 13:00

ah non mais l'à tu veux que le code trie les fichiers directement sur la fenetre de l'explorateur?
a
aleX9869
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 décembre 2018
Version d'Excel : 2016

Message par aleX9869 » 26 avril 2019, 14:54

Le "trier par" est dans l'onglet affichage de l'explorateur de fichier. Et pour répondre à ta question : je souhaite trier les fichiers directement dans l'explorateur de fichier pour que lorsque je vais dans mon dossier mes fichier soient classés.
Es ce que tu vois ce que je veux dire? :lole:
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'792
Appréciations reçues : 160
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 27 avril 2019, 04:27

aleX9869 a écrit :
26 avril 2019, 14:54
Le "trier par" est dans l'onglet affichage de l'explorateur de fichier. Et pour répondre à ta question : je souhaite trier les fichiers directement dans l'explorateur de fichier pour que lorsque je vais dans mon dossier mes fichier soient classés.
Es ce que tu vois ce que je veux dire? :lole:
oui oui je vois bien ce que tu veux dire :scritch:

Le tri des dossier, mais ca tu peux le faire directement sur windows et tu sauvegrdes ........
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 » 28 avril 2019, 12:01

bonjour à tous

Il y a des logiciels de macro tout exprès pour piloter Windows
j'utilise AutoHotKey (gratuit)

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, 15:01

Bonjour à tous les deux,

Je vous remercie pour vos réponses. :)

Pour être plus précis : j'effectue des opérations sur des fichiers d'un dossier. Pour que ces opérations ce passent correctement les fichiers doivent impérativement être trier par "nom" et en ordre "croissant" dans l'explorateur de fichiers.

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".

C'est pour cela, que je souhaiterai mettre au début de mon code une macro Vba qui me trie mes fichiers d'un dossier donné dans l'explorateur de fichier par le "nom" et en ordre "croissant".

Après plusieurs recherches, je n'arrive toujours pas à écrire le code... ::(

Je vous remercie pour votre aide...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message