OVH Cloud OVH Cloud

Recherche d'un répertoire dans un dossier

3 réponses
Avatar
Stéphane
Bonjour,

Je cherche une commande qui permet de lister le nom des répertoires qu'il y
à un chemin donné.
Merci d'avance pour votre réponse

Stéphane

3 réponses

Avatar
LE TROLL
Bonjour,

Voici une méthode, à titre indicatif pour le principe, j'ai fait un
copier/coller de mon pense-bête:

Objets
DriveListBox, DirListBox, FileListBox

Dim combien_numeros_liste As Long
Dim contenu_liste As String
combien_numéros_liste = Nom_FileListBox.ListCount
Contenu_Liste = Nom_FileListBox.List(Variable_indice)
'
Dir1 = ""
List1 = ""
Drive1 = "c:"
Dir1 = "c:"
List1 = "c:"
Text1 = Drive1
End Sub
'
Sub Drive1_Change() ' DriveListBox
On Error Resume Next
Dir1.Path = Drive1.Drive
Text1 = Drive1
End Sub
'
Sub Dir1_Change() ' DisListBox
File1.Path = Dir1.Path
Text1 = Dir1
End Sub
'
Sub File1_Click() ' FileListBox
Text1 = Dir1 & "" & File1
End Sub
---------------


"Stéphane" a écrit dans le message de
news:
Bonjour,

Je cherche une commande qui permet de lister le nom des répertoires qu'il
y
à un chemin donné.
Merci d'avance pour votre réponse

Stéphane


Avatar
Zoury
Salut Stéphane! :O)

regarde cet exemple (non testé.. mais le principe est là) :
'***
Public Function FolderExists(ByRef sFolder As String) As Boolean
On Error Resume Next
FolderExists = ((GetAttr(sFolder) And vbDirectory) = vbDirectory)
End Function

Public Function GetFolders(ByRef sFolder As String) As String()

Dim lSubFoldersCount As Long
Dim sSubFolders() As String
Dim sSubFolder As String

sSubFolders= Split("", " ") ' dimensionne de 0 à -1 dès le départ

If (Not FolderExists(sFolder)) Then Exit Function ' on quitte si
inexistant

sSubFolder= Dir$(sFolder & "*.*", vbDirectory)
Do Until LenB(sFile) = 0

If (((GetAttr(sFolder & sSubFolder) And vbDirectory) = vbDirectory)
And _
(sSubFolder <> ".") And (sSubFolder <> "..")) Then

ReDim Preserve sSubFolders(lSubFoldersCount) As String
sSubFolders(lSubFolderCount) = sSubFolder
lSubFolderCount = lSubFolderCount + 1

End If

sSubFolder = Dir$ ' Obtient le prochain répertoire dans (sFolder &
"*.*")
Loop

GetFolders = sSubFolders 'renvoit le tableau de fichier

End Function
'***

si tu as un grand nombre de répertoire à lister, je te conseillerais de
dimensionner ton tableau plus large au départ (buffer), de l'agrandir au
besoin et de tronquer les éléments de trop par la suite...

regarde la méthode AppendLine() de ma classe CFile pour un exemple de cette
technique :
http://groups.google.com/groups?selm=uKyYolctDHA.2464%40TK2MSFTNGP12.phx.gbl

--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
"Stéphane" a écrit dans le message de
news:
Bonjour,

Je cherche une commande qui permet de lister le nom des répertoires qu'il


y
à un chemin donné.
Merci d'avance pour votre réponse

Stéphane


Avatar
Pat Dev VB
il faut utiliser le FileSystemObject

Voici un exemple de code :

Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("C:Exemple de chemin")
Set fc = f.SubFolders
For Each f1 in fc
s = s & f1.name
Next

Ce code va énumérer tous les sous-dossiers du répertoire rentré en paramétre.
On peut également utiliser cette méthode pour les fichiers.
A ce moment-mà on met Set fc = f.files.

N'hésitez pas à me contacter en cas de souci.

"Stéphane" a écrit :

Bonjour,

Je cherche une commande qui permet de lister le nom des répertoires qu'il y
à un chemin donné.
Merci d'avance pour votre réponse

Stéphane