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


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Lister les dossiers et sous dossiers
    Bonjour à tous,
    J'espère que ce topic est toujours d'actualité

    Je viens de commencer un stage, et la première mission qui m'a été donnée est de faire un listing des archives de l'entreprise depuis une dizaine d'années. Après une longue recherche, je suis enfin parvenu à trouver ce que je cherchais (enfin presque). Dans mon entreprise, les données sont stockées sur des DVD, qui contiennent plus de 4000 fichiers chacun. Je vous laisse imaginer la taille du fichier Excel quand j'utilise vos macros
    Ce que je cherche à obtenir est la liste, non pas des fichiers, mais des dossiers. De plus, je souhaite limiter le "bouclage" pour les 5 premiers fichiers.
    La macro de zyhack est celle qui ce rapproche le plus de ma demande mais je n'arrive pas à apporter les modifications nécessaires pour arriver à mes fins..

    Quelles seraient les modifications que vous feriez sur la macro, dans l'unique but de me sauver la vie

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Bonsoir,

    C'est difficile de t'aider sans plus de renseignements de ta part.
    As tu essayé la fonction Dir, qui permet d'avoir le contenu d'un répertoire ?

    PPz

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    Bonjour,

    Tu peux adapter cet exemple qui liste les répertoires et les sous répertoires d'un 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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Option Explicit
     
    Dim i As Integer
    Dim Cible As Byte
     
     
    Sub listeDossiersEtSousDossiers()
        Dim Racine As String
     
        Application.ScreenUpdating = False
     
        Racine = "C:\Documents and Settings\mimi\dossier"
        Cible = nbSeparateur(Racine)
        ListeReps Racine, True
     
        Application.ScreenUpdating = True
        i = 0
    End Sub
     
     
    Sub ListeReps(strDossier As String, strSousDossier As Boolean)
        ' 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(strDossier)
     
        If strSousDossier Then
            For Each SubFolder In SourceFolder.subfolders
                i = i + 1
                'pour recuperer le chemin complet
                'Cells(i, nbSeparateur(SubFolder.Path) - Cible) = SubFolder.Path
                '
                'pour recuperer uniquement le nom du dossier
                Cells(i, nbSeparateur(SubFolder.Path) - Cible) = SubFolder.Name
     
                ListeReps SubFolder.Path, strSousDossier
            Next SubFolder
        End If
     
    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 m
        nbSeparateur = Nb
    End Function

    bonne journée
    michel

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Bonjour,

    On ne le dit pas assez souvent, VBA est capable de récursivité et la solution de SilkyRoad utilise cette capacité. BRAVO

    PPz

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2012, 11h50
  2. lister les sous-dossiers d'un dossier
    Par zizzo dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/07/2012, 13h40
  3. Lister les dossiers et sous dossiers
    Par alexandreS dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2010, 18h44
  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