|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : décembre 2008 Messages : 279 ![]() |
Bonjour à tous,
J'utilise depuis plusieurs années la macro suivante : Code :
Le nom de mes fichiers est de la forme : 2011 11 01 Client1.xls, 2011 11 02 Client2.xls etc. Année à 4 chiffres espace le mois à 2 chiffres espace un indice qui s'incrémente de 1 à chaque nouveau fichier suivi du nom du client 2011 11 01 Clients1.xls 2011 11 02 Clients1.xls ... 2011 11 99 Clients99.xls Jusqu'à présent pas de problème. Mon tableau se remplit bien dans le même ordre que le classement dans le répertoire. Ce mois ci j'ai plus de 100 fichiers, dans le répertoire ils sont classés chronologiquement, par contre la macro précédente ne respecte pas le classement du répertoire. Les fichiers au delà de 99 sont classés sous le fichier 2011 01 10 Client10.xls et j'obtiens 2011 11 01 Clients1.xls ... 2011 11 10 Clients10.xls 2011 11 100 Clients100.xls 2011 11 101 Clients101.xls 2011 11 11 Clients11.xls ... 2011 11 99 Clients99.xls J'ai essayé aussi avec Application.FileSearch, j'ai le même résultat. Ma question est donc de savoir s'il est possible de lister les fichiers dans le même que leur classement dans le répertoire Merci |
||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je ne pense pas qu'on puisse directement. Il doit falloir récupérer la dernière date de modification dans les propriétés du fichier et ensuite faire un tri sur ce critère...
... ou alors, tu renommes tes fichiers Citation:
|
|
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : décembre 2008 Messages : 279 ![]() |
Bonjour,
Comme proposé ça fonctionne, merci. Cependant quelqu'un a t-il une explication, car après tout le système classe les fichiers, dans le répertoire, chronologiquement sur le numéro. Il semblerait normal que l'on boucle sur les fichiers l'un après l'autre et que l'on obtienne deux classements identiques. |
|
|
00
|
|
|
#4 | ||||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Le problème ne vient de l'ordre dans lequel les fichier sont renommés, ils le sont bien dans le bon ordre (date de création, enfin a mon avis ordre alphabétique, car tes fichier doivent avoir une valeur qui s'incrément). Mais une fois tout tes fichiers renommé, lorsque windows les remet dans l'ordre alphabétique il ne tient pas compte de la valeur des chiffre mais des caractères qui le compose Code :
C'est pour cela que pour contré ce classement "erroné" le chiffre est formaté sur 2 caractères (dans ton cas) Code :
Si tu as le code qui format le nom des fichiers montre le nous, il est certainement possible de changer le formatage, attention tout de même que la "lecture" du nom du fichier et sa décomposition ne s'en trouve pas affectés. Tu devrais trouver quelque chose qui ressemble à ça Code :
NumeroFormate = format(NumeroAFromate, "0#") Code :
NumeroFormate = format(NumeroAFromate, "00#") Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Et pour compléter la réponse de Qwazerty, tu auras toujours via le FileSystemObject les fichiers par ordre alphabétique.
A la rigueur, il pourrait y avoir des options de tri, ce qui n'est pas la cas, mais il ne pourra pas savoir la manière dont tu l'as trié dans ton répertoire la dernière fois que tu l'as affiché. (Enfin, il y a surement une solution, avec les API Windows ou autre, mais ça devient vraiment très compliqué). Par contre si tu veux les trier d'une manière spécifique après les avoir récupérés, tu peux le faire dans ton code ça. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com