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 :

Boucle sur dossier [AC-365]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut Boucle sur dossier
    Bonjour,

    Je voudrais extraire les titres de dossiers présent dans un dossier.
    Je fais cela avec le bout de code suivant :

    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
     
    Sub ListerDossier(CheminTmp)
     
    Dim Fso As Scripting.FileSystemObject
    Dim SourceFolder As Scripting.Folder
    Dim SubFolder As Scripting.Folder
    Dim FileItem As Object
     
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = Fso.GetFolder(CheminTmp)
     
        'Boucle sur tous les fichiers du répertoire
        For Each FileItem In SourceFolder.Files
     
            If FileItem.Type Like "Dossier de fichiers" Then
                UsfSelectionDossier.ComboBox2.AddItem FileItem.Name
            End If
     
        Next FileItem
     
        End Sub
    Mais j'ai l'impression que cela ne tient pas compte des "fichiers" de type "Dossier de fichiers" qui sont présents dans le dossier que je cherche à scanner.
    Est-ce qu'il y a une autre façon de "scanner" des dossier contenus dans un dossier ?

    Merci.

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 580
    Par défaut
    Bonjour,
    Essais quand même de faire un debug.print FileItem.Type
    Le like permet de rechecher un fragment de phrases avant ou après une valeur ?.
    Exemple "Mes Dossier de fichiers 23"
    Like "*Dossier de fichiers*"

  3. #3
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour MM_13, Thumb down,

    Mais j'ai l'impression que cela ne tient pas compte des "fichiers" de type "Dossier de fichiers"
    Vous avez tout à fait raison, cela ne tient pas compte des sous-dossiers. Pour boucler sur les "Dossier de fichiers" dans un répertoire quelconque vous devez vous servir de la propriété "SubFolders". Vous n'aurez pas besoin de tester si c'est bien un répertoire. Voici une routine qui boucle sur les répertoires contenus dans le répertoire d'appel. Vous pouvez choisir d'afficher seulement le premier niveau de sous-dossiers ou tous les sous-dossiers.
    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
    Public Sub ListFolderInFolder(ByVal sFolderName As String, ByVal bIsSubfolders As Boolean)
     
        Dim xFolder As Object
        Dim xSubFolder As Object
     
        Set xFolder = oFSO.GetFolder(sFolderName)
        For Each xSubFolder In xFolder.SubFolders
        Debug.Print "Type: " & xSubFolder.Type & " nom: " & xSubFolder.Name
            If bIsSubfolders Then
                ListFolderInFolderT xSubFolder.Path, True
            End If
        Next xSubFolder
     
        Set xFolder = Nothing
     
    End Sub
    L'appel se fait ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListFolderInFolder "C:\LeCheminDuRepertoire", False 'True or false pour parcourir les sous répertoires ou pas
    Bonne journée

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Bonjour,

    La méthode de Robert1957 fonctionne parfaitement, mon problème est donc résolu.
    Merci.

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

Discussions similaires

  1. [OL-2013] Enregistrement email sous .msg - Boucle sur nom de dossier
    Par don_pets dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 13/09/2016, 08h44
  2. [PowerShell] Boucle sur fichiers d'un dossier
    Par johnbobby dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 30/06/2016, 13h54
  3. boucle sur les dossiers et conacténatenation des tables
    Par Mery_Dau88 dans le forum Macros Access
    Réponses: 0
    Dernier message: 04/09/2014, 10h16
  4. Boucle sur tous les fichiers d'un dossier
    Par chtrousselle dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/01/2013, 14h50
  5. Boucle sur dossier
    Par titeZ dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/02/2008, 16h50

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