Parcourir dossiers en ordre alphabétique

raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008 - 30 mai 2008 à 22:54
raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008 - 31 mai 2008 à 22:03
Bonjour,

je programme en VBA. Dans mon classeur excel j'ai un module qui parcours à partir d'un dossier choisi tous les sous-dossiers de ce dossier et il me les liste dans une colonne excel.

Ma macro fonctionne parfaitement sauf qu'il parcours les dossiers selon la date de création du dossier et non par ordre alphabétique.

Y a t-il un bout de code que je peux rajouter afin de parcours en ordre alphabétique. Ou encore un paramètre que je peux spécifier

15 réponses

raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008
30 mai 2008 à 23:18
Désolé, il me manquait une partie ... voila

Bonjour,

je programme en VBA. Dans mon classeur excel j'ai une macro qui, à partir d'un dossier donné, parcours tous les sous-dossiers de ce dernier et liste dans une colonne tous les sous-dossiers jusqu'à ce qu,il ait fini.

Mon problème est qu'il parcours en ordre de création et non en ordre alphabétique.

Y a t-il une bout de code que je pourrais rajouter ou un paramètre à spécifier. Voici à quoi ressemble mon code que j'ai récupété sur ce site afin de vous donner une idée de ce qui se passe.

Sub TousLesDossiers(LeDossier$)

Dim fso As Object, Dossier As Object, fichier As Object
Dim sousRep As Object, Flder As Object
Dim soussousrep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.getfolder(LeDossier)

oldstatusbar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Worksheets("Liste photos").Select


'examen du dossier courant
For Each Flder In Dossier.SubFolders
If ExtractFileName(Flder) = "2007" Then
'MsgBox "2007"
les_dossiers_année = les_dossiers_année + 1
GoTo skip
End If

les_dossiers = les_dossiers + 1
nb_photos_par_jour = nb_photos_par_jour + 1
Cells(3 + les_dossiers, 3).Value = ExtractFileName(Flder)

Application.StatusBar = "Dossier " & Flder & " dossiers:" & les_dossiers & " les dossiers année:" & les_dossiers_année

If Flder.Size = 0 Then
Cells(3 + les_dossiers, 4).Interior.ColorIndex = 6
Cells(3 + les_dossiers, 4).Value = "vide"
End If

skip:
Next


'traitement récursif des sous dossiers
For Each sousRep In Dossier.SubFolders
TousLesDossiers sousRep.Path
Next sousRep

Application.DisplayStatusBar = True
Application.DisplayStatusBar = oldstatusbar
End Sub 'fs


Merci d'avance pour vos réponses.

Désolé j'ai pas trouvé comment insérer du code.

Raffi
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 mai 2008 à 00:59
Salut
VBA --> Modification de la catégorie de la question.

Essaye en dimensionnant plus finement tes variables :
   Dim fso As Object, Dossier As Folder, fichier As File
   Dim sousRep As Folder, Flder As Folder 
   Dim soussousrep As Folder
Cela aura peut-être une influence sur la lecture

'soussousrep' et 'fichier' sont des variables inutilisées

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008
31 mai 2008 à 02:28
Bonjour Jack,

j'ai suivi ton conseil et cette fois ci les dossiers ont été listés selon un ordre différent que la 1ère fois.

C'est finalement en faisant apparaîte la colonne dte d'accès dans l'explorateur windows que j'ai compris que les dossiers avaient étés listés selon la date d'accès.

Je trouve c bizarra qu'on ne puisse par contrôle l'ordre dans lesquel les dossier (ou fichiers) sont parcourus.

Alors je cherche toujours.

Merci encore pour ta suggestion.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
31 mai 2008 à 12:45
Bonjour,

utilise simplement Dir et une Listview triée et parcours ta listview !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008
31 mai 2008 à 15:47
Bonjour et merci pour ta réponse.

Ça a l'air tellement simple (pour toi) mais je suis débutant et je connais pas ces commandes.

Pourrais-tu me lancer sur une piste en proposant un bout de code.

C'est quoi un listview ?

Je vais faire des recherches sur dir et listview

Merci encore
0
raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008
31 mai 2008 à 16:07
ok listview ne fonctionne pas en VBA de toute façon et trop compliqué.

Il doit y avoir moyen autrement.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
31 mai 2008 à 16:19
Pourquoi ne pas simplement trier ta colonne une fois les données inscrites ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
31 mai 2008 à 16:38
Comment celà, pas de ListView en VBA  ??? !!!!
évidemment qu'une listview est disponible avec VBA ... et son utilisation n'a rien de compliqué !!!
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
31 mai 2008 à 16:55
Salut JMF,
effectivement, la ListView est disponible, il me semble, mais n'est pas facilement portable. J'ai fait le test au bureau et j'ai laissé tomber... Mais je ne suis pas absolument certain d'où provient ce contrôle, par contre...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008
31 mai 2008 à 19:01
Bonjour,

En parlant de listview, voulez-vous dire listbox? Si oui, ok c vrai pas trop compliqué, mais dans mon cas ca ajouter des étapes et je veux garder ca au plus simple, mais il est vrai que c faisable.

Jusqu'à présent la solution que jaime le plus c'est trier la colonne. C'est vraiment bête comme la solution est simple et je cherchais plus compliqué. Je crois que vais opter pour cela.

Mais j'aimerais quand même comprendre comment le processus de parcours de dossiers choisis son premier dossier. J'imagine il y va par secteurs sur le disque qui est forcément la date de création ??

En tout cas merci pour toutes vos suggestions

A+
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
31 mai 2008 à 19:38
Non, on parlait bien de ListView. Comme le contrôle de droite lorsque tu ouvres l'Explorateur Windows.

Pour l'ordre de lecture, je ne peux expliquer... Peut-être selon les paramètres de l'affichage de cet Exploreur Windows, justement (?)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 mai 2008 à 20:42
salut,
si c'est juste pour toi....., ouvre ton répertoire qui sera listé, click droit, trier par , nom

sinon sur codyx.org tu trouveras comment
- liste un répertoire vers un tableau (avec ou sans récursion)
- trier un tableau par ordre ASC ou DESC

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008
31 mai 2008 à 21:06
oui la macro est utilisée uniquement par moi mais le dossier à parcourir est sur un serveur au travail auquel j'accède soit au bureau ou accès VPN.

Lorsque j'ouvre le répertoire depuis mon ordi, les données sont déjà classés par noms, mais le fait que ce soit sur un serveur est-ce que ça change quelquchose ?

Merci de vos réponses
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 mai 2008 à 21:47
je serai assez tenté de croire qu'il faut modifier l'affichage sur le serveur oui...

celà dit en faisant le test local, pas de différence chez moi...
(pas relancé explorer, peut-être lié .... ou pas ^^)
0
raffigeee Messages postés 10 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 31 mai 2008
31 mai 2008 à 22:03
ok merci je ferais le test local chez moi aussi et j'en redonne des nouvelles.
0
Rejoignez-nous