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 :

Recherche de fichier dans un repertoire et sous repertoire


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut Recherche de fichier dans un repertoire et sous repertoire
    Bonjour le forum,

    Je coince sur un petit problème. J'ai crée une fonction de recherche d'un fichier dans un répertoire spécifique. Mais j'aimerai étendre la recherche à tous les sous-répertoires.
    Comment faire ?
    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
    Public Function cherchePDF(fichier As String) As String
     
    Dim oFSO    As Scripting.FileSystemObject
    Dim oFl     As Scripting.File
    Dim chemin  As String
    '----------
    'recherche PDF 
    '----------
    chemin = "M:\Documents\Facture"
          fichier = fichier & ".pdf"
          If fichier <> "" Then
              'Instanciation du FSO
            fichier = chemin & "\" & fichier
            Set oFSO = New Scripting.FileSystemObject
            'Instanciation de l'objet File
            If oFSO.FileExists(fichier) Then
               cherchePDF = "Oui"
             Else
              cherchePDF = "Non"
            End If
     
          End If
     
     End Function

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Jette un œil à
    Recursive Folder Search - Find Files in Subdirectories
    http://www.ammara.com/access_image_f...er_search.html

    Et si tu as besoin de vitesse, il y a une solution dans qui fait appelle aux API décrite dans l'ouvrage :

    VBA Developer's Handbook, Second Edition
    Chapter 12 - Working with Disks and Files
    Listing 12.31: Use the dhFindAllFiles Function to Search Your Entire Hard Disk.

    Je ne l'ai pas copiée ici car elle est peut-être protégée par un copywrite mais elle est VRAIMENT efficace.
    Je l'ai implantée une fois et je suis passé de quelques minutes à quelques secondes.

    Le livre est accessible par le site www.books24x7.com mais il faut un abonnement. (Je passe par ma bibliothèque publique qui y donne accès.).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Bonjour au Forum,

    Merci à Marot_r pour l'info et les liens, mais là on ne joue pas dans la même cour.
    Je suis niveau maternelle et j'ai beau essayé de décrypter le code pas à pas. Sans succés. Mis à part un mal de tête...

    Merci egalement à claudelelou qui m'a donné une belle piste pour réussir mon code dont voici le résultat qui fonctionne pour le moment...
    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
    Public Function cherchePDF(Fichier As String) As String
     
    Dim FSO           As Scripting.FileSystemObject
    Dim sRep          As Scripting.Folder
    Dim sSubRep     As Scripting.Folder
    Dim racine        As String
    Dim rechfichier  As String
     
        racine = "M:\Document\Factures\"
        Fichier = Fichier & ".pdf"
     
        If Fichier <> "" Then
            Set FSO = New Scripting.FileSystemObject
            Set sRep = FSO.GetFolder(racine)
            rechfichier = racine & Fichier
     
             'Boucle sur les fichiers
               If FSO.FileExists(rechfichier) Then
                     cherchePDF = "Oui"
                     Exit Function
               End If
             'Récursivité pour les sous-répertoires
                   For Each sSubRep In sRep.SubFolders
                         rechfichier = sSubRep & "\" & Fichier
                         If FSO.FileExists(rechfichier) Then
                         cherchePDF = sSubRep  ' me donne le chemin du fichier
                         Exit Function
                         Else
                         cherchePDF = "Non"
                         End If
                   Next sSubRep
     
             'Libérer
             Set sRep = Nothing
             Set FSO = Nothing
        End If
     
    End Function
    Le clos le post. Merci pour votre aide

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Oui sous copyright Sybex.

    Elle existe sur le net il suffit de taper dhFindAllFiles dans un moteur de recherche et d'aller sur un serveur des pays de l'est.

    L'utilisation est simple :

    un path, un fichier c'est tout.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/09/2015, 22h08
  2. recherche de fichier dans des sous repertoires
    Par Abou Zar dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2010, 09h48
  3. Réponses: 6
    Dernier message: 09/06/2009, 17h38
  4. Réponses: 2
    Dernier message: 21/06/2007, 09h07

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