Ouvrir un fichier xls en ne connaissant que qlqun de ses caracteres
cs_valer
Messages postés140Date d'inscriptionmercredi 26 mai 2004StatutMembreDernière intervention26 juillet 2004
-
30 juin 2004 à 09:16
cs_valer
Messages postés140Date d'inscriptionmercredi 26 mai 2004StatutMembreDernière intervention26 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
A voir également:
Ouvrir un fichier xls en ne connaissant que qlqun de ses caracteres
Mooiz
Messages postés128Date d'inscriptionmercredi 25 juin 2003StatutMembreDerniè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
cs_valer
Messages postés140Date d'inscriptionmercredi 26 mai 2004StatutMembreDernière intervention26 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"
Mooiz
Messages postés128Date d'inscriptionmercredi 25 juin 2003StatutMembreDerniè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