Excel - Liaison en fonction de la valeur d'une cellule

Excel - Liaison en fonction de la valeur d'une cellule - VB/VBA/VBS - Programmation

Marsh Posté le 21-03-2013 à 19:57:46    

Bonjour à tous !
 
Je viens vous demander de l'aide pour un souci qui me prend le chou depuis le début de la journée :)
 
Je vous l'expose en espérant être le plus compréhensible possible.
 
Je dois réaliser un tableau récapitulatif des stocks sur les 4 dernières années civiles. Pour cela je dispose de :
- 1 fichier .xls centralisateur
- 4 dossiers (1 par année : 2010-2011-2012-2013). Dans chacun de ces dossiers, 12 fichiers .xls (1 par mois) ou la tenue des stocks c'est faite jour après jour. Seuls les totaux m'intéressent.
 
Donc au total, je dois pouvoir extraire des données de 48 fichiers différents (je vous parle même pas du nombre de lignes ...) bref, long peut-être mais au final, rien de bien méchant.
 
Donc voici mon problème : Si je met les liaisons directes comme ceci par exemple : ='D:\Stocks 2010\[s201001.xls]Stock'!A3 pour aller chercher mon total du mois de Janvier 2010 tout va bien tant que je reste dans l'année 2013. Mais lorsque je serais passé en 2014, il faudrait que ça donne : ='D:\Stocks 2011\[s201101.xls]Stock'!A3
Ne pouvant pas me mettre à jour chaque année, et la tâche étant relativement longue, je cherche le moyen de l'automatiser !
 
J'ai testé plusieurs choses comme ='D:\Stocks "&$A$1&"\[s"&A1&"01.xls]Stock'!A3     avec A1 =annee(aujourdhui())-3 ce qui me permet de toujours remonter 4 ans plus tôt.
Mais rien ... Je n'ose pas me lancer dans une fonction INDIRECT car il faudrait pour que cela fonctionne que les 48 fichiers Excel soient ouverts pour remonter la totalité des informations (enfin il me semble), ce qui est impossible.
 
Bref si vous avez des idées je suis plus que prenneur.
 
En espérant avoir expliqué assez clairement :)
 
Cordialement,

Reply

Marsh Posté le 21-03-2013 à 19:57:46   

Reply

Marsh Posté le 22-03-2013 à 07:58:56    

Bonjour,
il faut que tu reconstruises le chemin avec la fonction INDIRECT()
 
=INDIRECT("='D:\Stocks "&annee(aujourdhui())-3&"\[s"annee(aujourdhui())-3&"01.xls]Stock'!A3" )


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 23-03-2013 à 17:07:50    

La fonction Indirect marche effectivement mais seulement lorsque j'ouvre le fichier cible. :s
Je suis en train de réfléchir à une autre façon de faire. Celle là me semble trop lourde. Lorsque l'on ne peut pas défoncer le mur, autant le contourner ^^
 
Merci qd même :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed