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 :

Compter fichier de dossiers et sous-dossiers


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut Compter fichier de dossiers et sous-dossiers
    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

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    un exemple a adatper
    http://excel.developpez.com/faq/inde...riptingRuntime
    Au lieu de lister dans une cellule il te suffit d'incrémenter un compteur

    edit
    Comme la fonction est recusive c'est un peu moins évident qu ce que je pensé

    voici le code que j'ai utilisé, j'ai les même résultat qu'avec un clique droit/Propriétés sur le dossier

    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
    16
    17
    18
    19
    20
    21
    22
    Sub testconte()
    Dim chemin As String, i As Long
     
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     
     Set objShell = CreateObject("Shell.Application")
     Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     
     
     On Error GoTo gester
     Set oFolderItem = objFolder.Items.Item
     On Error GoTo 0
     chemin = oFolderItem.Path
     If chemin = "" Then Exit Sub
     Set oFolderItem = objFolder.Items.Item
    i=0
    ListeFichiers chemin, i
    MsgBox "Il y a " & i & " fichiers"
     
    gester::
    End Sub

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub ListeFichiers(Repertoire As String, i As Long)
        '
        'Nécessite d'activer la référence "Microsoft Scripting RunTime"
            'Dans l'éditeur de macros (Alt+F11):
            'Menu Outils
            'Références
            'Cochez la ligne "Microsoft Scripting RunTime".
            'Cliquez sur le bouton OK pour valider.
     
        Dim Fso As Scripting.FileSystemObject
        Dim SourceFolder As Scripting.Folder
        Dim SubFolder As Scripting.Folder
        Dim FileItem As Scripting.File
        'Static i As Long
     
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = Fso.GetFolder(Repertoire)
     
        'Récupère le numéro de la dernière ligne vide dans la colonne A.
        'i = 0 'Range("A65536").End(xlUp).Row + 1
     
        'Boucle sur tous les fichiers du répertoire
        For Each FileItem In SourceFolder.Files
     
     
            i = i + 1
        Next FileItem
     
     
        '--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
        For Each SubFolder In SourceFolder.subfolders
            ListeFichiers SubFolder.Path, i
        Next SubFolder
     
    End Sub
    Re edit tu peux remplacer la première partie par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub testconte()
    Dim chemin As String, i As Long
     chemin = "c:\tondossier\"
    i=0
     Set oFolderItem = objFolder.Items.Item
    ListeFichiers chemin, i
    MsgBox "Il y a " & i & " fichiers"
     
    End Sub

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour à tous !

    Et en plus court, avec une fonction que j'apprécie beaucoup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub recherche()
        With Application.FileSearch
            .NewSearch
            .RefreshScopes
            .LookIn = "C:\APT\PROGRAM\LIGNES\UNITS" 'Ton répertoire
            .Filename = "*.sfc"
            .SearchSubFolders = True 'Cherche dans les sous-répertoires !
            .Execute
            For Ctr = 1 To .FoundFiles.Count
                'Tu fais ce que tu veux 
            Next
        End With
    End Sub
    Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox(.FoundFiles.Count)
    suffira dans ton cas.

    Qu'en dis-tu ?

    A plus tard

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Ceci constituera mon unique réponse, pour justifier l'utilisation de MA solution à la place de celle de Dead


    Edit : en fait il semble que notre ami Dead risque d'être très mais alors très triste en apprenant ceci
    L'objet FileSearch n'étant plus supporté dans Office2007
    Source


    (Mais bon ca solution reste bien plus pratique )

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    HéHé, reviens-nous, on fait tous ça

    En revanche, ma solution ne sera pas fonctionnelle avec Excel 2007. Il faudra alors passer par ClassFileSearch. Si c'est ton cas, fais une petite recherche rapide sur le forum, cela revient exactement au même.

    A+

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Ha le temps que j'édite il avait posté (et pourtant j'avais rafraichi ) et en plus il était déjà au courant
    Bon au moins tu a le lien pour savoir comment le remplacer si tu doit être compatible avec 2007

Discussions similaires

  1. [XL-2007] lister les dossiers et sous dossiers et compter les fichiers
    Par barto92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/01/2013, 20h53
  2. Réponses: 6
    Dernier message: 15/04/2008, 18h46
  3. Telecharger tout le contenu d'un dossier ftp (sous dossier et fichier)
    Par daviddu54 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 31/08/2007, 13h18
  4. Lire un fichier situé dans 2 sous dossier...
    Par Pleymo dans le forum Langage
    Réponses: 10
    Dernier message: 08/12/2005, 09h30

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