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 :

Recherche de fichier grâce à VBA (sous dossier compris) [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Recherche de fichier grâce à VBA (sous dossier compris)
    Bonjour à tous,

    J'ai été recruté pour un mois dans une entreprise afin de coder un petit programme mais malheureusement je n'ai absolument pas les capacités pour réaliser ce qu'on me demande et les réponses que j'ai trouvé sur internet était soit plus valable car sur de plus ancienne version d'excel soit je n'y ai rien compris.

    C'est pourquoi j'ai absolument besoin d'aide.

    En fait, le programme doit pouvoir rechercher tous les fichiers excels qui comportent un ou deux mots clefs dans leurs noms de fichier. Le problème c'est que ces fichiers sont dans des sous-sous-fichier du fichier mère (père?) où je dois les rechercher.

    Un exemple pour peut-être aider la compréhension du problème : le fichier truc recherché est dans le dossier machin qui est dans le dossier bidule et je dois chercher tout les fichiers trucs dans bidule.

    J'espère avoir été compréhensible et ne pas trop en demander.

    Je vous remercie d'avance.

    Cordialement,
    Gregblob

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    un exemple parmi tant d'autres
    un fichier (tout cuit dans le bec) que j'ai gardé dans mes archives et dont je ne pourrai plus citer l'auteur :

    1 usf "Userform1"
    1 ListBox "ListBox1
    1 bouton de commande
    code de l'usf (variables et fonction)
    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
    Option Explicit
    Dim fso As New FileSystemObject
    Dim fld As Folder
     
     
    Private Function FindFile(ByVal sFol As String, sFile As String, _
       nDirs As Long, nFiles As Long) As Currency
       Dim tFld As Folder, tFil As File, FileName As String
     
       On Error GoTo Catch
       Set fld = fso.GetFolder(sFol)
       FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
                      vbHidden Or vbSystem Or vbReadOnly)
       While Len(FileName) <> 0
          FindFile = FindFile + FileLen(fso.BuildPath(fld.Path, _
          FileName))
          nFiles = nFiles + 1
          ListBox1.AddItem fso.BuildPath(fld.ShortPath, FileName)  ' a adapter
          'ou ListBox1.AddItem  FileName
          FileName = Dir()  ' Get next file
          DoEvents
       Wend
       Label1 = "Recherche " & vbCrLf & fld.Path & "..."
       nDirs = nDirs + 1
       If fld.SubFolders.Count > 0 Then
          For Each tFld In fld.SubFolders
             DoEvents
             FindFile = FindFile + FindFile(tFld.Path, sFile, nDirs, nFiles)
          Next
       End If
       Exit Function
    Catch:  FileName = ""
           Resume Next
    End Function
    code pour le bouton (sur l'usf)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton1_Click()
     Dim nDirs As Long, nFiles As Long, lSize As Currency
       Dim sDir As String, sSrchString As String
       sDir = InputBox("Repertoire de départ", _
                       "Vous pouvez modifier", ThisWorkbook.Path)
       sSrchString = InputBox("Type de fichier", _
                       "exemple", "*.xl*")
       Label1.Caption = "Recherche " & vbCrLf & UCase(sDir) & "..."
       lSize = FindFile(sDir, sSrchString, nDirs, nFiles)
       MsgBox Str(nFiles) & " Fichiers trouvés dans" & Str(nDirs) & _
              " repertoire(s)", vbInformation
       MsgBox "Total taille = " & lSize & " bytes"
    End Sub
    tu devrais pouvoir adapter
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci de ta réponse

    Bon après une heure sur ce code, je dois avouer ne quasiment rien comprendre. Je suis vraiment une buse en VBA

    Est ce que tu aurais la gentillesse et le temps de commenter un peu le code pour que je puisse comprendre ? ^^'

    Cordialement,
    Gregblob

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Avant toute chose, est-ce qu'il correspond à tes besoins ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Vu que je ne le comprends pas entièrement, je ne peux pas vraiment te le dire. Mais de ce que j'ai compris, ça pourrait correspondre.

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    essayes ce fichier et regardes son code (légèrement modifié)
    Fichiers attachés Fichiers attachés
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup, je commence à comprendre et ça fonctionne. C'est parfait.

    Juste une dernière question/demande, comment pourrais je rajouter un champs de recherche ?
    Je veux dire je lui demande de chercher les fichiers contenants des termes précis :
    Par exemple, je demande les fichiers truc bidule si un fichier ce nomme truc_bidule_machin il est mis dans la liste mais si il y a truc_machin_chose, cela ne le prend pas en compte.

    Je sais que je demande beaucoup et j'en suis désolé.

  8. #8
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je ne comprends pas la question car, quand tu arrives ici

    Nom : recherche fichier.JPG
Affichages : 355
Taille : 24,7 Ko

    tu mets ce que tu veux, exemple "bidule*.xl*" ou *bidule*".....

    pour des recherches spécifiques, il faut modifier la procédure, tout dépend du résultat attendu, un jour tu vas chercher "truc_machin* l'autre truc_bidule*

    expliques-toi bien, il y a certainement quoi faire, exemple en ajoutant un "InputBox" qui affinera la recherche
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Ah d'accord. Je croyais qu'on ne pouvait rechercher qu'un type de fichier (excel, world, etc...) pas le nom avec cette procédure.

    Dans ce cas, c'est parfait merci !

  10. #10
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    eh oui, de même quand tu arrives ici, tu changes le chemin comme tu veux

    Nom : recherche fichier2.JPG
Affichages : 508
Taille : 34,1 Ko

    penses à cliquer sur quand tu auras estimé avoir régler ton souci
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    J'ai compris du coup

    Merci infiniment de ton aide.

  12. #12
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    J'ai compris du coup
    tu verras, ça viendra si tu persistes dans ton apprentissage

    content de t'avoir aidé

    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Je vais tenter de m'accrocher

    Merci bonne journée à toi aussi

  14. #14
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Bon après un test complet de ce code, un problème est soulevé. Le recherche des fichiers prends plus de 20 minutes.

    Y aurait il un moyen pour stopper la recherche au sous-sous dossier pour limiter le temps ? ou même de chercher uniquement dans les sous sous dossier nommé 1_ TdB ?

  16. #16
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    comme je l'ai écrit, tout se passe ici, il suffit de changer une ligne de code soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Depart = InputBox("Repertoire de départ", _
                      "Vous pouvez modifier", ThisWorkbook.Path)
    à la place de la ligne en bleu, prévoir le chemin, ou de stipuler où commencer la recherche

    Nom : recherche fichier2.JPG
Affichages : 508
Taille : 34,1 Ko
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  17. #17
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    Citation Envoyé par Gregblob Voir le message
    Le recherche des fichiers prends plus de 20 minutes.
    Du plus véloce au moins rapide :

    • Windows API (liens de kiki29)

    • Dir VBA (même en récursif pour les sous répertoires)

    • FileSystemObject (parfois équivalent à Dir mais exceptionnellement plus rapide) …

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  18. #18
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, @Gregblob : à moins que les recherches ne se fassent sur un réseau, auquel cas .....
    sinon ici 77s au lieu de 15s pour les APIs.

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    casefayere :

    En fait je dois mal m'exprimer donc je vais essayer de donner un exemple précis.

    Je dois chercher tous les fichiers Tdb (excel) contenu dans le dossier qu'on nommera dossier de départ. Or ce dossier est construit de la manière suivante :

    Dossier de départ -> dossier avec le nom d'un projet -> dossier TdB et c'est dans ce dernier que ce trouve un des fichiers. Et il faut faire ce schéma pour tout les fichiers qui sont propres à un projet.

    Marc-L :

    1) Je ne peux pas télécharger ce genre de chose vu que la demande est de faire un truc sous vba (je vais devoir extraire les données des fichiers par la suite)
    2) Je ne suis pas assez calé pour utiliser ça
    3) Le service informatique ne veut pas autoriser l'ajout de ce complément.

    Kiki29 :

    Même si ce que tu proposes a l'air de très bien marcher, je suis obligé de passer par une procédure VBA (voir réponse à Marc-L)

  20. #20
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Je ne suis pas assez calé pour utiliser ça
    Bref, tu laisses tomber sans même essayer, tu te prépares un bel avenir.
    Le service informatique ne veut pas autoriser l'ajout de ce complément.
    ?????

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. VBA Recherche de Fichier dans des sous répertoires
    Par GuiJenn34 dans le forum Général VBA
    Réponses: 12
    Dernier message: 09/06/2015, 14h14
  2. [XL-2010] VBA exel - Rechercher un classeur dans un sous dossier dont le nom est inconnu
    Par rsuf91 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2014, 14h10
  3. Executer et/ou ouvrir un fichier en VBA sous access 2000
    Par Access_ible dans le forum VBA Access
    Réponses: 10
    Dernier message: 01/09/2009, 11h36
  4. rechercher des fichiers dans tous les dossiers
    Par nitteo dans le forum MFC
    Réponses: 4
    Dernier message: 23/06/2006, 18h08
  5. Recherche de fichiers dans des sous répertoires
    Par Mimi Bulles dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2006, 16h41

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