XL 2013 Comment charger une combobox avec le nom des dossiers

SSI83000

XLDnaute Occasionnel
bonjour à tous

j'utilise cette macro pour charger la liste des noms de fichier présent dans un dossier

VB:
Sub charge()

Dim Dossier As String, Fichier As String, i As Integer

Dossier = ThisWorkbook.Path & "\Playliste\" & USF1.playliste & "\" '& USF1.playliste ' & ".mp3"

i = 0

Fichier = Dir(Dossier)

Do While Fichier <> ""

  i = i + 1
Sheets("Liste").Range("A" & i + 1) = Fichier
  'Sheets("Liste").Range("A" & i + 1) = Split(Fichier, ".")(0)
  'Sheets("Liste").Range("B" & i + 1) = "." & Left(Split(Fichier, ".")(1), 3)


  Fichier = Dir

Loop

End Sub

mais je recherche comment charger dans ma combobox une liste de dossier présent dans un autre dossier exemple dans le dossier "Dossier Music" charger le nom des dossier qui aurait le nom Playlist 1 playlist2....

pouvez vous svp m'aider cordialement
 

patricktoulon

XLDnaute Barbatruc
Bonjour
il te faut une fonction récursive qui va chercher les dossier playlist(x) et les list dans la combo

exemple
VB:
Sub test()
    Dim racine$
    racine = "F:\Dossier Music" 'dossier  à  adapter
    tableau = recherche_récursive(racine)
    'Cells(1, 1).Resize(UBound(tableau) + 1, 1) = Application.Transpose(tableau)
combobox1.List = tableau
End Sub
'
'
Private Function recherche_récursive(dparent, Optional L As String) As Variant
    Dim FSO As Object, Lparent As Object, SubFolder As Object, Ficher
    Set FSO = CreateObject("scripting.filesystemobject")    ' on declare l'object
    ' regard sur les fichiers
    Set Lparent = FSO.GetFolder(dparent)    'on attribue a l'object.getfolder le dossier demandé 'Scripting.Folder
    'MsgBox GetAttr(Lparent)
    If GetAttr(Lparent) <> 22 Then
        For Each Ficher In Lparent.Files    'on boucle sur les fichiers qui sont dans ce dossier
            L = L & Ficher & vbCrLf
        Next

        'boucles sur les sous dossiers
        For Each SubFolder In Lparent.SubFolders    'on boucle sur les dossiers qui sont dans ce dossiers
            If InStr(1, SubFolder.Path, "Playlist") Then
            recherche_récursive SubFolder.Path, L   ' on rappelle la fonction avec pour argument le chemin du sous dossier ainsi que l'extension et L qui est déjà peut être remplie
        End If
        Next SubFolder
    End If

    recherche_récursive = Split(L, vbCrLf)    'on coupe la liste par les saut de lignes on a maintenant un array la fonction devient cet array
End Function
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo