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

Macros et VBA Excel Discussion :

Connaître le nombre de fichiers d'un volume ou répertoire et sous-réperertoires


Sujet :

Macros et VBA Excel

  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut Connaître le nombre de fichiers d'un volume ou répertoire et sous-réperertoires
    J'aimerais connaître le nombre de fichiers d'un volume ou d'un répertoire sans avoir à les compter. Une solution par les API de Windows ?
    Par avance, merci

  2. #2
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub CommandButton1_Click()
    Dim fso As Object, Dossier As Object
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
                Set Dossier = fso.GetFolder(Directory)
     
                Cpte = Cpte + Dossier.Files.Count
     
                'traitement récursif des sous dossiers
     
     
                Set fso = Nothing
    MsgBox Cpte
    End Sub
    je sais pas si sa t interesse, je n utilise pas d API.

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci Tomy.
    Ok, ma question est mal posée :
    J'aimerais connaître le nombre de fichiers d'un volume ou d'un répertoire et de leurs sous-répertoires sans avoir à les compter.
    Sinon, j'ai déjà une fonction récursive qui fait ça.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir, ousk,

    je ne connais personnellement pas d'autres moyens.

    Je te précise en outre que seuls les fichiers non cachés seraient comptés par inventaire récursif. Il faut donc (en récursivité) et qu'il convient donc de préciser que tous les attributs doivent être acceptés.

    tu observeras d'ailleurs que Microsoft fait la même chose depuis l'explorateur. cherche par exemple les propriétés du répertoire c:\Winnt ou c:\Windows et observe bien ===>> avancement d'un "inventaire"

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, j'ai retrouvé cela dans mon bazar, je n'en connais pas l'origine, mais cela devrait te convenir http://cjoint.com/?edsoKmceMF

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci kiki.
    Je souhaitais simplement avoir le nombre de fichiers dans un répertoire et ses sous-répertoire. Pour compter les fichiers, j'ai cette fonction qui fonctionne très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function CompteLesFichiers(PathRep As String) As Long
    Dim fs, RepFich As Variant
        Set fs = CreateObject("Scripting.FileSystemObject")
        CompteLesFichiers = fs.GetFolder(PathRep).Files.Count
        For Each RepFich In fs.GetFolder(PathRep).SubFolders
            CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.path)
        Next RepFich
    End Function
    Et l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub CompterSeulement()
    Dim chemin As String
        chemin = "D:\Doc\" 'avec ou sans sous-répertoire
        MsgBox CompteLesFichiers(chemin)
    End Sub
    Cette fonction peut se décliner sans difficulté pour avoir le nom des répertoires et le nom des fichiers qu'il contient. Mais ce n'est pas mon but.
    Mon souhait aurait été d'avoir directement le nombre de fichiers d'un répertoire et ses sous-répertoire sur une ou deux lignes de commande... Et je pense que seule une API de windows pourrait "m'offrir ça.
    Si je n'ai pas de réponse, je changerai le sujet de la discussion, il y a plein de choses intéressante là-dedans
    Merci à tous.

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    ... Et je pense que seule une API de windows pourrait "m'offrir ça.
    Non, Ousk

    M'as-tu lu et as-tu essayé ?
    Crois-tu que Microsoft n'en n'aurait pas lui même profité ?

  8. #8
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir peut-être sur http://vbnet.mvps.org/index.html?cod...api/index.html et adapter

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci (re) kiki.
    J'ai regardé, j'ai vu un code d'une centaine de lignes... J'ai jeté un oeil juste pour voir... et j'ai refermé
    Bon, je crois que je vais en rester là puisque ucfoutu insiste
    @ ucfoutu
    Une dernière chose : Tu es sûr qu'on peut pas avec les API ?

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut


    Mais si tu veux que je m'amuse avec :

    - la récursivité
    - une seule fonction de l'API (Sendmessage)
    - et uniquement Dir

    Juste pour rigoler.... et avec peu de lignes de code ...(moins de 30 et en plus petites)
    Je m'en sens parfaitement capable (je vois déjà comment)

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Et avec moins de 13 lignes, tu y arrives avec Dir ?
    http://www.developpez.net/forums/sho...d.php?t=521218

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Non !

    Il m'en faudra au moins 5 de plus, mais...

    1) je n'alourdirai rien (ne chargeant rien)
    2) mon résultat sera atteint (surtout s'il y a un grand nombre de répertoires et fichiers) de manière sensiblement plus rapide qu'avec le code du lien que tu montres !

    3) maintenant : en oubliant Dir et en m'y prenant avec une fonction de l'Api supplémentaire (à la place de Dir), j'irais encore plus vite (mais des lignes de code en plus)...

    Faut savoir ce que l'on veut, dans la vie

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'ai fait ça (utilisation de Dir) pour trouver un fichier dans un volume, ses répertoires et leurs sous-répertoires. Mais j'ai fait un mix avec fso.
    Dir accélère effectivement la recherche d'un fichier dans un répertoire, mais ne facilite pas la tâche pour lister les répertoires.
    J'ai mis ça http://www.developpez.net/forums/sho...35&postcount=2
    J'ai placé ça dans un userform, suffit de l'ouvrir
    Mais là, 33 lignes tout de même

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    J'ai tout compris de ton lien ...
    Ouvre-le donc, toi ...

    Si tu veux que je m'y mette, fais signe ...

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'ai corrigé mais je ne comprends pas, j'avais testé pour voir si je n'avais pas d'erreur pour masquer le fichier à l'ouverture et l'afficher en quittant l'userform
    Là, j'ai retesté !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/04/2015, 23h47
  2. [Batch] Compter le nombre de fichiers dans un ou plusieurs répertoires
    Par Olivier Regnier dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 11/10/2011, 22h17
  3. Réponses: 4
    Dernier message: 20/04/2011, 12h11
  4. Réponses: 0
    Dernier message: 15/03/2009, 13h52
  5. Réponses: 2
    Dernier message: 26/08/2007, 15h30

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