Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

rapatrier données d'un autre classeur

  • Initiateur de la discussion Initiateur de la discussion friscogreencar
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

friscogreencar

Guest
Bonjour,

Mon classeur : C_12_05.xls (C + mois et année)
Mes feuilles : 001_truc, 002_machin ...

je veux récupérer une cellule de la même feuille mais du classeur du mois précédent : C_11_05.xls

en utilisant des valeurs existantes dans la feuille : C, Décembre2005, 001_truc ...
et bien sûr que ça marche pour n'importe quelle feuille.

Si quelqu'un a une idée, soit par une formule dans la feuille, soit en macro ?

Merci pour votre future aide
FG
 
Bonsoir à tous

Pas encore de réponse, et il y a quelque temps j'ai posé une question similaire sans aucun retour.
Je vais donc essayer d'être plus explicite.

Pour récupérer une cellule d'un autre document, j'indique : =[C_11_05.XLS]001_Truc!$E$44
Or dans une cellule (X1) je peux récupérer C_11_05.xls, et dans (X2): 001_Truc
La formule deviendrait alors :
=[W1]W2!$E$44
Mais ça ne marche pas car excel n'interprète pas [W1] comme étant la feuille C_11_05.xls et de même pour W2.
je pense qu'il faudrait lui indiquer quelque chose comme 'Valeur de W1', ou transformer cette valeur en texte ou ...
Pourtant ça ne semble pas sorcier, mais malgré de nombreuses recherches je bute désespérément dessus et le forum aussi.
Il se peut que ce soit plus aisé par macro, mais là encore je ne sais par quel bout commencer.
Si vous avez une idée, je suis preneur.

@+

FG
 
Bsr le fil, bsr friscogreencar,

Si toutes les feuilles sont identiques dans leur structure, pourquoi ne pas utiliser un nom pour la cellule à récupérer, ce qui permet de l'appeler sous la forme :

=nom de la feuille.xls!cellule nommée

Par contre, je ne ais plus si la feuille doit être chargée pour que le calcul s'exécute ...

à vérifier
 
Bonsoir Domi

Merci de ta réponse, mais je ne vois pas comment elle peut me servir.
Il faut quand même que j'indique le nom du classeur et celui de la feuille.
Soit je le fais manuellement tous les mois sur les 50 feuilles du classeur, soit je fais référence à des données toujours présentes sur la feuille.
Or, même si je nomme la cellule, ça ne remplace que $E$44 mais pas le reste.
Ou alors je n'ai pas tout compris

@+
FG
 
Salut friscogreencar et Domi,

Je reprends l'exemple de départ :
Dans une cellule quelconque du classeur [C_12_05.xls] feuille 001_truc on désire récupérer la valeur de la cellule B2 de la feuille identique mais du classeur du mois pécédent, soit [C_11_05.xls].

Feuille 001_truc du classeur [C_12_05.xls]
A1 : =DROITE(CELLULE('nomfichier';$A$1);NBCAR(CELLULE('nomfichier';$A$1))-CHERCHE('[';CELLULE('nomfichier';$A$1))+1)
Une cellule quelconque : =INDIRECT('''&GAUCHE($A$1;3)&STXT($A$1;4;2)-1&DROITE($A$1;NBCAR($A$1)-5)&''!$B$1')
Il y aurait tout avantage à nommer ces formules.

Restrictions :
La deuxième formule n'est pas valable pour le mois de janvier, le 01 du mois devant devenir 12 et le 05 de l'année devant devenir 04.
Ce n'est pas très compliqué à adapter.
Pour que la deuxième formule fonctionne il faut que le classeur du mois précédent soit ouvert.
Ici aussi il y aurait moyen d'adapter les formules pour qu'elles puissent lire dans un claseur fermé.

Â+
 
Salut Anfré et Domi

André tu es un sauveur. Tu réponds à ma demande, mais étant très nul en VB j'ai beaucoup de mal à analyser une formule aussi complexe.

La première A1, donne le répertoire, le nom du fichier et celui de la feuille.
mais la seconde m'affiche #VALEUR!

J'ai mis la première équation dans A1, la seconde dans la cellule de décembre que je veux récupérer le mois précédent et pourtant j'ai ce message d'erreur.

Petite précision je veux en fait récupérer en G41 de décembre la cellule E44 de novembre.

Si tu peux m'aider encore un peu ??

merci de ton aide

FG
 
Salut,

Un exemple en pièce jointe.
Crée d'abord un fichier C_11_05 et place une valeur en cellule A10.

Cette formule est valable pour n'importe quelle cellule, par exemple G14 de C_12_05.
Pour récupérer la valeur de la cellule E44 de C_11_05 il faut remplacer dans la formule $A$10 par $E$44 (tout à la fin).

La feuille 001_truc peut être copiée.
En modifiant le nom de l'onglet en 002_machin, les formules s'adaptent automatiquement.

Cette formule n'est toutefois pas valable pour récupérer en janvier une valeur du mois de décembre de l'année précédente.
C'est un peu plus compliqué, mais faisable.

Â+ [file name=C_12_05.zip size=2821]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/C_12_05.zip[/file]
 
Bonjour André,

J'ai eu ton petit mot sur mon autre fil, celui qui m'a donné droit à des reproches.

Après modif des bornes pour avoir dans mon cas : C:\\temp\\xxxxxxx[C02_
12
_05]001_Truc

la partie : STXT($A$1;4;2) renvoi bien 12 mais
STXT($A$1;4;2)-1 lui renvoi -1 (d'où le nouveau fil)
Après bien des recherches, en faisant :
CNUM(STXT($A$1;4;2))-1 j'obtiens bien mon fameux 11.

Et malgré tout, cette formule ne va pas chercher ma cellule du classeur précédent (que j'ai ouvert) ?
Les messages d'erreur sont #VALEUR ou #REF selon mes essais (parenthèses ou ' ou ' déplacées car ne connaissant pas bien VB, je procède par essais successifs pour comprendre son fonctionnement).

Quant à forcer C02_11_05.xls à être ouvert, ayant une macro je peux donc l'activer (je crois que ça suffit sans devoir l'ouvrir).
Le problème sera plus ardu à résoudre avec le mois de janvier.
Si ça peut t'aider (dans l'aide que tu m'apportes), c'est un document fait en janvier, à partir de la fonction aujourd'hui() ou maintenant() et par un décaler, une cellule m'affiche Décembre 2005, et une autre Novembre 2005.
C'est peut-être utile pour récupérer le mois précédent, et pour passer de janvier 2006 à Décembre 2005.

@+ de te lire et merci encore

FG
 
Resalut,

Chaque chose en son temps.

Voyons d'abord si tu parviens à faire fonctionner ma dernière pièce jointe, après on verra pour le changement d'année.
C'est d'ailleurs dans ce but que j'ai nommé cette première formule.
Celle pour le changement d'année, basée sur le même principe sera aussi nommée, ce qui permettra de faire plus facilement le choix par un SI.

Â+
 
Bonsoir,

J'ai réessayé cette nouvelle formule sans plus de succès.

Et pourtant sur la tienne aucun problème.
J'ai donc renommé mon classeur comme le tien : D_12_05.xls pour ne pas avoir à modifier tes formules (car en fait il se nommait C02_12_05.xls) et rien à faire. STXT(...)me renvoyait toujours -1 et non 11.
J'ai fait un copier/coller de cette feuille dans ta feuil3 et tout fonctionne très bien.
Le -1 s'est transformé en 11 et je récupère bien ma cellule du mois précédennt !!!
C'est incompréhensible.

Il doit y avoir une macro ou je ne sais quoi qui modifie ma feuille et j'aimerai bien trouver quoi.
Le plus important, c'est ton aide qui me permet de réaliser ce que j'espérais.
Encore merci

@+

Fg
 
Salut,

Le problème est peut-être ici :

La partie centrale de la formule :
STXT($A$1;CHERCHE('[';$A$1)+3;2)-1
pour un nom de fichier :
[C_12_05.xls]
La valeur 12 se trouve en 3ième position de cette chaîne pour un longueur de 2 caractères.

Si tu modifies le nom de ton fichier en :
[C02_12_05.xls]
la valeur 12 se trouve en 5ième position, toujours pour un longeur de 2 caractères.

Tu dois donc modifier cette partie centrale de la formule comme suit :
STXT($A$1;CHERCHE('[';$A$1)+5;2)-1

Essaie et dis-moi si ça marche.

Â+
 
Resalut,

A y reflechir tu peux également modifier la partie centrale comme suit :
STXT($A$1;CHERCHE('_';$A$1)+1;2)-1
On commence à compter à partir du 1° _ et non à partir de [
Ainsi tu pourras modifier ce qui précède le _ comme bon te semble, sans à avoir à modifier la constante de la formule.

Je suis impatient de savoir si le problème est résolu.

Â+
 
Bonjour,

J'avais bien pris en compte la modif de recherche de STXT (5 au lieu de 3).
Mais bizarrement, en renommant mon fichier D_12_05.xls et sans changer tes formules, ça ne fonctionnait toujours pas.
Quand j'ai recopié ma feuille dans ton classeur C_12_05.xls et recopié ce classeur sous C_11_05.xls tout était OK.La liaison se faisait, j'ai bien récupéré la valeur de la cellule définie.
En final j'ai donc recopié toutes mes feuilles dans ton classeur, renommé mon classeur C02_11_05.xls en C_11_05.xls et je te le donne en mille : message d'erreur #VALUE !!!
Et puis j'ai laissé tomber.
A la réflexion, la seule différence vient des macros que j'ai dans mes classeurs (C02_...D_... et dans le dernier C_11_05.xls.
A chaque fois qu'une feuille n'en contient pas tout est OK, dès qu'elle en contient (mais pas encore activées) il y a erreur.
J'ai tout le WE pour y réfléchir.

@+

FG
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
910
Réponses
3
Affichages
884
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…