Recherche d'un dossier en VBA

Fermé
DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 30 nov. 2010 à 11:52
DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 2 déc. 2010 à 08:05
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


A voir également:

3 réponses

DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 1
30 nov. 2010 à 16:13
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
30 nov. 2010 à 17:09
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
30 nov. 2010 à 14:22
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
DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 1
1 déc. 2010 à 08:38
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 1/12/2010 à 15:50
Bonjour,

En définitive, j'ai fini par faire une simulation car sinon, il manque toujours une ligne ou des fautes de syntaxe !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
1 déc. 2010 à 15:51
0
DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 1
2 déc. 2010 à 08:05
Salut , je n'ai pas compris , il y a un problème?
0