IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

comptage de fichier dans arborescence repertoire [AC-2002]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut comptage de fichier dans arborescence repertoire
    Bonjour,
    Comment faire pour que dans ce code de comptage recursif des fichiers, les fichiers cachés/systems ne soient pas pris en compte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim fs As Variant, RepFich As Variant
        Set fs = CreateObject("Scripting.FileSystemObject")
        CompteLesFichiers = fs.GetFolder(Chemin).Files.Count
        For Each RepFich In fs.GetFolder(Chemin).SubFolders
            CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.Path)
        Next RepFich
    Merci d'avance à ceux qui pourraient m'aider...

  2. #2
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    essai quelque chose comme ca ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        For Each RepFich In fs.GetFolder(Chemin).SubFolders
            If (RepFich.Attributes And vbHidden) = 0 Then
                CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.Path) - 1
            else
                CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.Path)
            End If
       Next RepFich
    Parfois il faut faire le tour d'une roche 10 fois avant de s'apercevoir quelle est ronde.
    • Si vous trouvé mon post intéressant, n'oubliez pas de voter coté inférieur droit du message. Merci
    • Si votre Post est indiquez le....
    • Celuil là je devait le mettre ici ....hihi -->

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Tout d'abord, mes excuses de ne pas avoir utilisé les balises de code dans mon post. J'utilise beaucoup le site afin de trouver des exemples et de mieux comprendre le fonctionnement de VBA... J’espère désormais pouvoir contribuer au site.
    Ensuite, merci beaucoup a Robyseb pour la rapidité de cette réponse... je ne pourrais la tester que mardi, mais ça me semble évident maintenant. Je ne manquerais pas de te tenir informé...
    Merci encore.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Cette solution fonctionne parfaitement, et je m'y attendais...
    Merci mille fois !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bon... Après réflexion, il y a quand même un petit problème... Il semblerait qu'un dossier vide retourne -1. Un fichier caché seul est en effet bien décompté, mais pas s'il est accompagné d'un autre fichier (ex : une image et son fichier Thumbs comptés comme 2 fichiers au lieu d'1)... Finalement le résultat produit est un peu aléatoire en fonction du nombre de dossiers et fichier présents...
    J'ai atteins mes limites de compréhension par rapport à mes connaissances en VBA. arghhhh...


    Petit rappel du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Function CompteLesFichiers(Chemin As String) As Long
    Dim fs As Variant, RepFich As Variant
        Set fs = CreateObject("Scripting.FileSystemObject")
        CompteLesFichiers = fs.GetFolder(Chemin).Files.Count
        For Each RepFich In fs.GetFolder(Chemin).SubFolders
            If (RepFich.Attributes And vbHidden) = 0 Then
                CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.Path) - 1
            Else
                CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.Path)
            End If
        Next RepFich
    End Function

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Finalement, j'ai été obligé de bricoler un peu pour trouver enfin la bonne solution...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Function CompteLesFichiers(Chemin As String) As Long
    Dim fs As Variant, RepFich As Variant, strChaine As String
        Set fs = CreateObject("Scripting.FileSystemObject")
        strChaine = Dir(Chemin & "*.*")
    Do While strChaine <> ""
        CompteLesFichiers = CompteLesFichiers + 1
        strChaine = Dir
    Loop
    For Each RepFich In fs.GetFolder(Chemin).subfolders
        CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.Path & "\")
    Next RepFich
    End Function
    Mais cette fois, ca fonctionne parfaitement et ne compte pas les fichiers cachés ni les fichiers systems...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. chercher un fichier dans un repertoire
    Par parisien dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/11/2005, 20h55
  2. Pb de comptage de fichiers dans un dossier
    Par oz80 dans le forum Access
    Réponses: 2
    Dernier message: 15/11/2005, 14h26
  3. Nombre de fichiers dans un répertoire
    Par berry dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 12/11/2005, 17h48
  4. Réponses: 4
    Dernier message: 19/04/2005, 12h27
  5. Réponses: 6
    Dernier message: 11/02/2005, 06h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo