Compter nombre de fichiers

Thomas1806 Messages postés 4 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 20 juillet 2009 - 20 juil. 2009 à 13:52
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 juil. 2009 à 16:42
Bonjour à tous je n'arrive pas a trouver la solution pour compter le nombre de fichier *.sfc qui se trouve dans le dossier (et ces sous dossiers) "C:\APT\PROGRAM\LIGNES\UNITS"

Merci

5 réponses

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
20 juil. 2009 à 14:18
Snippets : http://www.codyx.org/snippet_compter-nombre-fichiers-dans-repertoire_263.aspx

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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Thomas1806 Messages postés 4 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 20 juillet 2009
20 juil. 2009 à 14:59
Dans ce code là il cherche les fichiers du dossier mais pas de ces sous dossiers et c'est cela que je n'arrive pas à faire.
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
20 juil. 2009 à 16:13
Ton option "(et ces sous-dossiers)", entre parenthèses, ne laissait pas deviner que c'était ton souci majeur.

On pourrait utiliser la récursivité de la fonction : la fonction s'appelle elle même en lui fournissant des paramètres différents, c'est à dire le répertoire actuel + le nom du répertoire suivant.

Le gros problème de la fonction DIR (ou DIR$), c'est qu'elle n'a qu'un seul buffer, c'est à dire que si tu commences un DIR dans un Do-Loop par exemple, si, à l'intérieur de cette boucle, tu fais une autre commande DIR avec d'autres paramètres, le DIR aura perdu ce qu'il était en train de faire dans la boucle initiale.
Il faut donc travailler avec autre chose que DIR pour faire de la récursivité.

Par exemple le FileSystemObject

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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
xpert12 Messages postés 114 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 10 septembre 2010
20 juil. 2009 à 16:33
salut,

tu peux trouver ta réponse à cette adresse :

http://faq.vb.free.fr/index.php?question=169 dans la partie : "Utilisation des API FindFirstFile et FindNextFile"

@+
0

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

Posez votre question
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
20 juil. 2009 à 16:42
Ou alors, pour une fois, du tout cuit :
Dans la source dont je parlais en première réponse, avant le End Function, insère ceci :
    Dim aListeRep() As String
    Dim r As Long
    
    ' Recherche les répertoires de ce répertoire --> Liste
    ReDim aListeRep(0)
    sFile = Dir(sDir & "*.", vbDirectory)
    Do While sFile <> ""
        If sFile <> "." And sFile <> ".." Then
            If aListeRep(0) = "" Then
                ' On a encore rien stocké
                aListeRep(0) = sFile
            Else
                ReDim Preserve aListeRep(UBound(aListeRep) + 1)
                aListeRep(UBound(aListeRep)) = sFile
            End If
        End If
        sFile = Dir
        DoEvents
    Loop
    ' Maintenant, on relance notre fonction avec ces sous-répertoires complémentaires
    For r = 0 To UBound(aListeRep)
        If aListeRep(0) <> "" Then
            CountFilesFromDirectory = CountFilesFromDirectory + _
                                      CountFilesFromDirectory(sDir & aListeRep(r) & "")
        End If
    Next r


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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous