Pb avec fso

Résolu
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011 - 5 janv. 2007 à 16:37
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011 - 6 janv. 2007 à 10:52
Bonjour voila j'ai un petit problème avec un filesystemobject ( en voici le code récupé sur codyx) : je n'arrive pas a lister le contenu d' un cd ou dvd   ( mais d'un dossier normal pas de problème)

je c'est le problème c'est : Fso.getfolder mais je c pas comment le remplacer por qu'il prennent en compte les cd et dvd

Public Sub ListerSousRepertoire(ByVal NomRepertoire As String, ByRef Fso, ByVal NumFile As Integer)
Dim SubFol, Fi, Fol
    Set Fol = Fso.getfolder(NomRepertoire)
         For Each Fi In Fol.Files
               List1.AddItem Fi.Path
    Next
       For Each SubFol In Fol.SubFolders
            Call ListerSousRepertoire(SubFol.Path, Fso, NumFile)
    Next
      Set Fol = Nothing
    Set Fi = Nothing
    Set SubFol = Nothing
End Sub

exemple d'appel : 

    Dim NumFile As Integer
    NumFile = FreeFile
    Call ListerSousRepertoire("E:", CreateObject("Scripting.FileSystemObject"), NumFile)
    Close NumFile


 

7 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 janv. 2007 à 16:57
Salut,

voit si la fonction de PCPT te convient :

Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.*") As Long
'  
GetFilesPathFromDirectory retourne -1 si aucun fichier trouvé
'   sinon retourne la dimension du tableau, donc NB fichiers -1
(tableau commence à l'indice 0)

'   init les
résultats
    GetFilesPathFromDirectory = -1
    Erase aRet
    If RightB$(sDir, 2) <> "" Then sDir = sDir & ""

'   formate le
chemin
    Dim sFile As String, lIndex As Long
    sFile = Dir(sDir & sFilter, vbHidden Or
vbSystem)

'  
redimentionne après vérif premier fichier
    If sFile <> vbNullString Then
        lIndex = 0
        ReDim aRet(lIndex)
        aRet(lIndex) = sDir & sFile
        sFile = Dir

'       boucle sur tous les fichiers
        Do While sFile <> vbNullString
            lIndex = UBound(aRet) + 1
            ReDim Preserve aRet(lIndex)
            aRet(lIndex) = sDir & sFile
            sFile = Dir
        Loop

'      
retour
        GetFilesPathFromDirectory = lIndex
    End If
End Function

'   EXEMPLE
D'UTILISATION
Private Sub Command1_Click()
    Dim aResultat() As String
    Dim lRet As Long
    Dim i As Long

    lRet = GetFilesPathFromDirectory("E:", aResultat())
    If lRet <> -1 Then
        For i = 0 To lRet
            Debug.Print "Fichier " & i + 1 & " = " & aResultat(i)
        Next i
    End If
End Sub

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011
5 janv. 2007 à 17:03
euh oui sa marche mais sa ne me donne pas le contenu des dossier et de tout les dossier

euh et encore un question :

ou dois-je placer fso.copyfile pour copier les fichier un  par un  pour alimenté un progressbar

merci d'avance dodo
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 janv. 2007 à 17:17
Salut Dodo1309,
Regarde bien le code de Mortalino, il y a une "boucle" dans son code....Je me trompe Mortalino ?!!


A+


Exploreur


 
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 janv. 2007 à 17:18
Moi j'ai une fonction sur Codyx qui liste tout mais c'est pour du vba, c'est peut-être adaptable, à voir.

Pour ton histoire de copie, il faut savoir le nombre de fichiers, ensuite pour alimenter ton progressbar au niveau de la valeur, c'est une division par rapport au nombre total de fichiers et au numéro en cours.

regarde le progressbar de Renfield, il est bien graphiquement et facile d'utilisation.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 janv. 2007 à 17:19
Salut Exploreur,

oui, c'est dans la boucle qu'il faut gérer ça, avec lRet (Nbre total de fichiers) et i (valeur en cours)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 janv. 2007 à 17:38
Elle est bien cette fonction...Peut m'être utile...
A+
Exploreur
0
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011
6 janv. 2007 à 10:52
merci sa marche bien
0
Rejoignez-nous