Hello
Pour récupérer des valeurs dans des fichiers avec des nombres dans le nom du fichier, c'est "assez simple juste" avec des formules, et donc sans code.
A savoir :
- La fonction indirect() te permet d'utiliser une chaine comme référence Excel.
Exemple :
- en A1 : ="A2" (Ce qui va ecrire "A2" en A1)
- En A2 : 25
- En A3 : =Indirect(A1) (Il va renvoyer 25, puisqu'en A1 on a saisi A2, et en A2 on a 25)
- Pour recupérer le nom du classeur en cours :
=STXT(CELLULE("filename";A1);TROUVE("[";CELLULE("filename";A1))+1;SOMME(TROUVE({"[";"]"};CELLULE("filename";A1))*{-1;1})-1)
- Dans notre cas, ca renverra : EA3.xls
- Avec des fonctions qui permettent de se ballader dans le texte, on peut par exemple transformer EA3.xls en EA1.xls avec une soustraction (-2) :
=GAUCHE(STXT("EA3.xls";3;100);1)-2 Renvoi 1 (Et si on avait saisi EA4.xls ca renverrait 2 etc.)
- Donc en ajoutant les chaines "EA" au début et ".xls" a la fin de la chaine :
="EA" & (GAUCHE(STXT("EA3.xls";3;100);1)-2) & ".xls" renvoi EA1.xls (Et si on avait saisi EA4.xls ca renverrait EA2.xls etc.)
- Donc avec le nom du classeur en cours, calculé comme plus haut, on va créer la chaine EA1.xls :
="EA" & (GAUCHE(STXT(STXT(CELLULE("filename";A1);TROUVE("[";CELLULE("filename";A1))+1;SOMME(TROUVE({"[";"]"};CELLULE("filename";A1))*{-1;1})-1);3;100);1)-2) & ".xls" renvoi EA1.xls (Et si notre fichier en cours etait EA4.xls ca renverrait EA2.xls etc.)
On a donc trouver comment récupérer un fichier "N-2" a partir du nom du fichier en cours.
Ce qui fait, avec en rouge le N-X et en bleu la cellule sur laquelle on pointe :
- Pour faire pointer en A12 sur le fichier N-2 :
=INDIRECT("[EA" & GAUCHE(STXT(STXT(CELLULE("filename";A1);TROUVE("[";CELLULE("filename";A1))+1;SOMME(TROUVE({"[";"]"};CELLULE("filename";A1))*{-1;1})-1);3;100);1)-2 & ".xls]Feuil1!$A$12" )
- Pour faire pointer en C10 sur le fichier N-1 :
=INDIRECT("[EA" & GAUCHE(STXT(STXT(CELLULE("filename";A1);TROUVE("[";CELLULE("filename";A1))+1;SOMME(TROUVE({"[";"]"};CELLULE("filename";A1))*{-1;1})-1);3;100);1)-1 & ".xls]Feuil1!$C$10" )
Cordialement
Message édité par SuppotDeSaTante le 22-02-2010 à 12:18:15
---------------
Soyez malin, louez entre voisins !