Recherche d'un dossier en VBA
DonGosma
Messages postés
10
Statut
Membre
-
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
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
-
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-
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
-
-
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 -
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-
-
SOLUTION SUPPRIMEE: pas le temps non plus
https://www.developpez.net/forums/d1006697/logiciels/microsoft-office/excel/macros-vba-excel/ouvrir-fichier-excel-dont-nom-partie-fixe-variable/ -
-