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 :

lister les dossiers et sous dossiers et compter les fichiers [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut lister les dossiers et sous dossiers et compter les fichiers
    Bonjour à tous et meilleurs vœux pour cette nouvelle année 2013.

    j'utilise actuellement le code ci-dessous pour lister les dossiers et sous dossiers sur mon serveur nas , mais je voudrais y rajouter le comptage de tous les fichiers dans chaque dossier et sous dossiers que la macro liste
    afin de pouvoir comparer mes fichiers sauvegarder sur le nas et celles de mon PC

    Merci d'avance pour votre aide
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    _____
     
    Option Explicit
    Dim i As Integer
    Dim Cible As Byte
     
     
    Sub listeDossiersEtSousDossiers()
        Dim Racine As String
        Application.ScreenUpdating = False
     
        Racine = "\\BARTO\photos\"
        Cible = NbSeparateur(Racine)
        ListeDossiers Racine
     
        Application.ScreenUpdating = True
        i = 0
    End Sub
     
     
     
    Sub ListeDossiers(NomRep As String)
        'Adapté de Ole P Erlandsen
        Dim Fso As Object, SourceFolder As Object
        Dim SubFolder As Object
     
        On Error GoTo Fin
     
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = Fso.GetFolder(NomRep)
     
        For Each SubFolder In SourceFolder.SubFolders
     
            i = i + 1
            'pour récupérer le chemin complet
            'Cells(i, nbSeparateur(SubFolder.Path) - Cible) = SubFolder.Path
            '
            'pour récupérer uniquement le nom du dossier
            Cells(i, NbSeparateur(SubFolder.Path) + 1 - Cible) = SubFolder.Name
            ListeDossiers SubFolder.Path
        Next SubFolder
     
    Fin:
    End Sub
     
     
    Function NbSeparateur(Chemin As String) As Byte
        Dim m As Integer
        Dim Nb As Byte
     
        For m = 1 To Len(Chemin)
            If Mid(Chemin, m, 1) = "\" Then
                Nb = Nb + 1
                m = m + 1
            End If
        Next
     
        NbSeparateur = Nb
    End Function
     
    ___
    [/QUOTE]

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonsoir,

    Essaie comme ça. Comme j'ai voulu "améliorer" ton code, j'ai peut-être cassé quelque chose. Normalement, le nombre de fichiers est à côté du nom du 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Public Fso As Object, SourceFolder As Object
     
    Dim i As Integer
    Dim Cible As Byte
     
     
    Sub listeDossiersEtSousDossiers()
        Dim Racine As String
        Application.ScreenUpdating = False
        Set Fso = CreateObject("Scripting.FileSystemObject")
        'Racine = "\\BARTO\photos\"
        Racine = "c:\users\daniel"
        Cible = NbSeparateur(Racine)
        ListeDossiers Racine
     
        Application.ScreenUpdating = True
        i = 0
    End Sub
     
     
     
    Sub ListeDossiers(NomRep As String)
        'Adapté de Ole P Erlandsen
        Dim SubFolder As Object
     
        On Error GoTo Fin
     
        Set SourceFolder = Fso.GetFolder(NomRep)
     
        For Each SubFolder In SourceFolder.SubFolders
     
            i = i + 1
            'pour récupérer le chemin complet
            'Cells(i, nbSeparateur(SubFolder.Path) - Cible) = SubFolder.Path
            '
            'pour récupérer uniquement le nom du dossier
            Cells(i, NbSeparateur(SubFolder.Path) + 1 - Cible) = SubFolder.Name
            Cells(i, NbSeparateur(SubFolder.Path) + 2 - Cible) = SubFolder.Files.Count
            ListeDossiers SubFolder.Path
        Next SubFolder
     
    Fin:
    End Sub
     
     
    Function NbSeparateur(Chemin As String) As Byte
        Dim Nb As Byte
     Nb = Len(Chemin) - Len(Application.Substitute(Chemin, "\", ""))
        NbSeparateur = Len(Chemin) - Len(Application.Substitute(Chemin, "\", ""))
    End Function
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    je te re merci pour ta réponse

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

Discussions similaires

  1. lister les sous-dossiers d'un dossier
    Par zizzo dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/07/2012, 13h40
  2. Lister les dossiers et sous dossiers
    Par alexandreS dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2010, 18h44
  3. Lister les dossiers et sous dossiers
    Par alexandreS dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/09/2010, 07h41
  4. [XL-2003] Lister les fichiers dans les dossiers et sous dossiers
    Par doncamelo dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/07/2010, 10h41
  5. [VB6]lister les dossiers et sous dossier
    Par Jacen dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/04/2006, 08h06

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