Problème d'arborescence (Liste) de dossiers et sous-dossiers d'un disque

Bonjour.

J'ai un problème avec une macro EXCEL (Macro simplifiée pour l'exemple).

La macro que j'ai créée, écrit (Dans la colonne "A"), la liste des dossiers et des sous-dossiers d'un répertoire (D'un dossier) ou d'un disque dur (Externe ou interne) ou encore d'un disque amovible (USB) . Le chemin est indiqué dans une cellule ("C11").

Quand ce chemin est un dossier cela marche sans problème, j'ai bien les sous-dossiers de ce répertoire.

Quand ce chemin est un disque, je veux les dossiers et sous-dossiers de ce disque. C'est là qu'il y a problème. Le résultat dépend de l'endroit ou se trouve mon fichier EXCEL (D'où je lance ma macro). Si mon fichier EXCEL se trouve dans un répertoire ( Un dossier) de ce disque j'obtiens uniquement les sous-dossiers de ce répertoire et non l'ensemble des dossiers et sous-dossiers voulus du disque. Par contre si mon fichier EXCEL se trouve directement sous le disque j'ai bien l'ensemble des dossiers et sous-dossiers du disque.

Mes recherches sur internet n'ont rien données, je fais donc appel à la communauté pour m'aider à résoudre ce problème.

Merci de me répondre

Ci-joint mon fichier EXCEL.

Bonjour pigat ,

Essayez :

  • Après la ligne : dRacine = UCase(Range("C11").Value)
  • insérez la ligne : If Right(dRacine, 1) = ":" Then dRacine = dRacine & "\"

re,

je suppose que votre dossier actuel est maintenant "C:\...\..." et c'est à partir de la que cette macro fait sa recherche ...un moment

Bonjour

Merci pour votre réponse mais cela ne marche pas, ça ne change pas le résultat. J'avais déja pensé à mettre le chemin avec un "\" de cette façon "E:\" ce qui revient au même de ce que vous me proposez.

Bonjour BsAlv

Non je ne fais pas la recherche à partir de "C" mais à partir d'un autre disque dur interne mais aussi à partir d'une USB.J'ai le même problème dans tous las cas.

Je pense que le problème vient de la ligne "Set oDracine = oWindows.GetFolder(dRacine)" car quand je suis dans un dossier "oDracine" prend la valeur du chemin du dossier dans lequel je suis au lieu de prendre la valeur du chemin du disque par exemple "E:\".

Re,

Vous avez écrit : Merci pour votre réponse mais cela ne marche pas, ça ne change pas le résultat. J'avais déjà pensé à mettre le chemin avec un "\" de cette façon "E:\" ce qui revient au même de ce que vous me proposez.

Sur mon PC, ça fonctionne.

Reboujour Mafraise

Merci pour votre réponse. Vous n'avez peut-être pas ou je me suis mal expliquer sur mon problème.

Si mon fichier Excel se trouve dans un dossier la liste obtenue n'est pas celle du disque indiqué (Par exemple "E:\" ). il n'y a pas les dossiers et sous-dossiers du disque mais seulement les sous-dossiers du dossier dans lequel se trouve mon fichier Excel

Re pigat,

Vous vous être bien exprimé. C'est ma pomme qui a lu de travers et trop vite.

re,

une autre méthode (attention, commencez avec un dossier assez petit, pas directement le "C:" !!!

Sub test()
     Dim MonDossier, MesDossiers
     s = CurDir 'dossier actuel
     MonDossier = "c:\"  'ThisWorkbook.Path & "\"    '<<<<< le dossier que vous voulez
     ChDir MonDossier
     MesDossiers = Split(CreateObject("WScript.Shell").Exec("cmd /c dir """ & MonDossier & """ /b /ad /s ").StdOut.ReadAll, vbCrLf)
     ChDir s
     Range("A:A").ClearContents              'Efface le contenue de la colonne "A"
     If UBound(MesDossiers) > 32000 Then ReDim Preserve MesDossiers(32000)
     Range("A1").Resize(UBound(MesDossiers) - LBound(MesDossiers) + 1).Value = Application.Transpose(MesDossiers)

End Sub

Merci BsAlv pour votre réponse

Ca fonctionne. Je vais étudier le code pour le comprendre

Excuser moi "Mafraise", mais votre proposition " If Right(dRacine, 1) = ":" Then dRacine = dRacine & "\" " marche très bien. Je ne sais pas ce qui c'est passé quand j'ai essayé cela , donc erreur de ma part.

encore merci

Rechercher des sujets similaires à "probleme arborescence liste dossiers disque"