Ouvrir un fichier xls en ne connaissant que qlqun de ses caracteres

cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004 - 30 juin 2004 à 09:16
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004 - 30 juin 2004 à 15:49
bonjour,
ok alors la j'espere au moin que c faisable.
En gros le pb est le suivant: je recupere dans une case excel mettons 5 caracteres, et j'ai un dossier de fichier. Recupérer et ouvrir le fichier si le nom de la case est le meme que le fichier c ok,je c faire.
Mais en revanche faut que je me debrouille pour recupérer le fichier avec seulement une partie de son nom.
Du type je vais avoir dans ma case CIRCOM ben faut qu'il comprenne qui doit aller chercher le fichier AZ92CIRCOMr8-F
la les boss du vba faut m'aider les gars et les filles (pour fanny!)
merci!!
Valer

4 réponses

Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
30 juin 2004 à 13:13
Pour ma part je te conseillerais bien d'utiliser la recherche de windows :
application.FileSearch

j'ai jamais vraiment utilisé cette fonction donc je ne peut pas te renseigner précisement, mais d'après ce que je lis, il doit falloir faire quelque chose comme
dim temp as FileSearch
application.filesearch.lookin = "le repertoire a scanner"
application.filesearch.filename = "le nom de ton fichier"
temp = application.filesearch.execute()

sachant que tu peux utiliser les caractères joker * et ? (pour rappel : * remplace une chaine qcq de longueur qcq, et ? remplace un caractère seul quelconque)
donc dans ton cas, tu mettrais :
filename = "*" & tachaine & "*" et ca devrait coller

Ensuite pour acceder aux resultats, c'est temp.foundfiles(i) ou encore temp.foundfiles.item(i). Je pense que ca doit te renvoyer une chaine qui contient le nom du fichier, peut être précédé du chemin (à voir)

Par contre pour automatiser completement le traitement, il faudra que tu assures l'unicité des résultats (il faut pas qu'une recherche donne plus d'un resultat). Pour vérifier si c'est le cas (et éventuellement proposer une solution si on trouve plusieurs réponses), fais appel à temp.foundfiles.count, qui te renvoie le nombre de résultats trouvés.

Voila, il me semble que c'est une solution assez simple. Pour être plus indépendant de windows, on pourrait faire la même chose avec les fonctions dir et instr, mais j'ai un peu la flemme !!! si quelqu'un veut s'y coller...

NB : j'ai pas testé, mais ca devrait marcher. Je reste là si tu as des problèmes
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
30 juin 2004 à 14:48
ok momo!
ca marche pas mal ton truc, le seul probleme c'est que maitenant a la fin de mon prog, je dois refermer le classeur que j'ai ouvert donc workbooks(nomcls).close
mais comment recuperer juste le nom, car la .foundfiles me renvoie le chemin d'acces en plus! il me faudrait juste le nom du classeur donc pas le chemin d'acces ni le ".xls"

merci!
Valer
0
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
30 juin 2004 à 15:40
momo : lol !!!

bon essaye ca :

dim nom as string
Set fs = CreateObject("Scripting.FileSystemObject")
nomFic=fs.getfilename("le nom de ton fichier avec le chemin")

ca devrait marcher je pense (toujours pas testé)
par contre je suis pas sur que ca supprime l'extension. Si c'est pas le cas :

temp = split(nomFic, ".")
'Le mieux serait de déclarer temp comme un tablea de string
'mais je me souviens plus...
nom = temp(1) 'ou temp(0), je sais plus

voila une possibilité. Pas top vu que ca fait intervenir un fso juste pour ca, mais je fait dans 'l'économie de lignes...

sinon on peut aussi remplacer la première partie par :
temp = split(nomFic,"")
'même remarque que précedement pour temp
nomFic=temp(ubound(temp)) 'ou peut être ubound-1 ?

Et dans ce cas je suis sur qu'il faudra faire le split avec "." pour enlever l'extension

voila
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
30 juin 2004 à 15:49
ok merci, tient pour information j'ai du qd meme changé qlqs lignes dans ton truc :p

with application.filesearch
.lookin = "le repertoire a scanner"
.filename = "*" & tachaine & "*" 
.execute


voila mais sans toi j'y pensais meme pas!
merci!
Valer
0