Recherche d'un dossier en VBA
DonGosma
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
DonGosma Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
DonGosma Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Vba rechercher un fichier avec une partie du nom
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
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
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
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
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/
https://www.developpez.net/forums/d1006697/logiciels/microsoft-office/excel/macros-vba-excel/ouvrir-fichier-excel-dont-nom-partie-fixe-variable/
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