Recherche d'un dossier en VBA

DonGosma Messages postés 10 Statut Membre -  
DonGosma Messages postés 10 Statut Membre -
Bonjour,

Je dois faire du VBA et je ne peux pas faire autrement car il y a des milliers de fichiers :

J'ai un petit problème car je souhaite ouvrir un fichier qui se trouve dans un répertoire et qui commence toujours par PKR_HIJ_1.xls ou PKR_HIJ_2.xls ou PKR_HIJ_3.xls ou PKR_HIJ_4.xls .
Or Le terme HIJ peut changer mais j'ai déjà réglé ce problème. Le souci vient du fait que certaines personnes veulent rajouter des commentaires à la fin des fichiers comme par exemple : PKR_HIJ_1___(escalier).xls ; Je suis donc bloqué car j'ai fait une boucle qui fait varier le chiffre de 1 à 4 mais je ne peux pas trouver un fichier s' il y a un commentaire entre paranthèses. Est-il possible de faire une recherche approximative par exemple avec juste le début du fichier ?

Merci d'avance

3 réponses

  1. DonGosma Messages postés 10 Statut Membre 1
     
    Bonjour,

    D'abord merci pour ta réponse mais je ne suis pas arrivé à l'utiliser correctement dans mon code.
    Je vais essayer de m'expliquer plus clairement :
    Je fais une boucle pour le nom HIJ d'abord donc il varie. Ensuite, je voudrais trouver un fichier nommé PKR_HIJ_n__(comments).xls avec le n qui varie aussi ; Or les commentaires entre paranthéses changent pour chaque fichier donc je voudrais ouvrir les fichiers qui commencent par "PKR_HIJ_n" et donc en quelque sorte dire à l'ordi qu'on s'en fout du reste du nom du fichier; j'avais fait comme ça :

    chantier = AZE

    For ChiffreUnderscore = 1 To 4

    nomfichier = "PKR_" & Chantier & "_" & ChiffreUnderscore & "*.xls"

    with application.filesearch
    For iSearch = 1 To .FoundFiles.Count ' la boucle continuera tant qu'on trouve des fichiers PKR sur le disque

    If GetFileNameFromPath(.FoundFiles(iSearch)) = nomfichier Then ' si on trouve le fichier recherché grace à une fonction crée auparavant

    Workbooks.Open Filename:=.FoundFiles(iSearch), UpdateLinks:=0, ReadOnly:=True

    ' CODE QUI TRAVAILLE sur le fichier PKR que je viens d'ouvrir et qui dans ce cas s'appellerait d'abord par exemple PKR_AZE_1__(comments).xls ou PKR_AZE_1_(azerty).xls

    end if
    next isearch

    end with
    1
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Re,

      Attention: Filesearch n'est plus admis sur XL2007 et tu risques des problèmes de portabilité si ton appli est installé sur un ordi avec 2007
      voir cet article
      https://silkyroad.developpez.com/vba/classefilesearch/

      voici le principe ( je ne peux pas tester sur une maquette) d'un code qui recherche le classeur en faisant abstraction des commentaires. une fois trouvé et ouvert on sort de la macro

      Sub selectionner_classeur()
      Dim liste, cptr As Integer
      ReDim liste(0) As String
      
      chantier = "HIJ"
      chantier = chantier & "_"
      Set dico = CreateObject("Scripting.Dictionary")
      'etablir la liste des fichiers commencant par PKR_chantier
      chemin = "D\......" 'a adapter
      ChDir chemin
      fich = Dir("PKR_" & chantier & "*.xls")
      While fich <> ""
          ReDim Preserve liste(cptr)
          liste(cptr) = fich
          cptr = cptr + 1
      Wend
      
      For indice = 1 To 4
          For cptr = 0 To UBound(liste)
              If liste(cptr) Like "PKR_ " & chantier & indice & "*" Then 'vérifier la syntaxe du like
                  Workbooks.Open Filename:=liste(cptr) 'voir si concaténer chemin & "\" & liste(cptr)
                  Exit Sub
          Next
      
      Next
      End Sub
      
      
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    chemin = "g:\ mimi\..... " 'chemin du repertoire
    ChDir chemin
    
    fich = Dir("PKR_" & "*.xls")
    While fich <> ""
     
     'code de ce que tu veux faire...
        fich = Dir
        Wend
    End Sub
    
    0
  3. DonGosma Messages postés 10 Statut Membre 1
     
    bonjour,

    Je ne comprends pas car mon fich reste toujours vide alors que j'ai vérifié qu'il y avait des fichiers avec le bon nom dans le CHEMIN en question...

    Merci pour ta réponse
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,

      En définitive, j'ai fini par faire une simulation car sinon, il manque toujours une ligne ou des fautes de syntaxe !
      0
    2. DonGosma Messages postés 10 Statut Membre 1
       
      Salut , je n'ai pas compris , il y a un problème?
      0