XL 2016 Récupérer une valeur dans un autre fichier ouvert/fermé

Chubby

XLDnaute Impliqué
Bonjour,

Pour construire un tableau (solde, ligne total entrées) j'ai besoin d'aller récupérer des données dans un fichier (entrées) qui peut être ouvert.
Les deux fichiers ont des colonnes avec le même nom mais sont organisées différemment dans les onglets (1/mois). Le fichier comporte 12 onglets avec les noms de mois.
La question: comment récupérer les soldes de chaque colonne du fichier entrées pour que les valeurs viennent s'afficher dans la colonne de l'autre classeur (solde).
Bien sûr la technique la plus simple serait de faire =. Mais ce n'est pas très esthétique je trouve et qui plus est fastidieux.
Pourriez vous m'aider?
Je vous joins les deux fichiers.

Merci
 

Pièces jointes

  • Solde.xlsx
    12.1 KB · Affichages: 20
  • Entrées.xlsx
    10.3 KB · Affichages: 7

Chubby

XLDnaute Impliqué
Bonjour Goube,
Voilà qui est vite fait, bien fait. Je vois que tu es passé par un tableau ou plutôt par une plage nommée pour simplifier les choses. Je vais essayer de mettre ça en place. Pas facile car il s'agit là d'extrait de fichier. Mais je vais essayer.
Je vais examiner ta façon de faire, c'est intéressant avec la fonction indirect ... qui marche.
En revanche, si à l'ouverture de ton fichier tout est ok, dès que j'active la fenêtre modification... j'hérite de #réf
On me veut du mal? rire
Je me penche sur ta solution très élégante. Merci à toi
 
Dernière édition:

Chubby

XLDnaute Impliqué
Goube,

Je suis en train de retranscrire dans ta formule dans mes tableaux.
Dans la mesure où ces derniers peuvent être de tailles variables, ne penses tu pas que l'on pourrait passer par une fonction "max". On aurait ainsi le total.
Merci à toi
 

job75

XLDnaute Barbatruc
Bonjour Chubby, goube,

Je ne comprends vraiment pas pourquoi goube utilise la fonction INDIRECT puisqu'elle ne fonctionne pas si le classeur Entrées.xlsx est fermé.

Alors qu'une formule de liaison classique dans la fonction RECHERCHE va très bien, en B15 :
Code:
=RECHERCHE(9^9;[Entrées.xlsx]janvier!$C:$C)
Téléchargez les 2 fichiers joints dans le même dossier.

A+
 

Pièces jointes

  • Entrées.xlsx
    10.3 KB · Affichages: 6
  • Solde.xlsx
    12.9 KB · Affichages: 4

Chubby

XLDnaute Impliqué
Bonjour Job75,

Merci de te prêter à mon problème.
Ta solution a le mérite d'être très simple. Le 9^9 va chercher la plus grande valeur dans la colonne désignée. Mais les deux fichiers ne sont pas construit (pour des raisons de présentation) dans le même ordre au niveau des colonnes. Ainsi on a dans le classeur source (entrées: Sancerre blanc; Pouilly Fumé ...) alors que le fichier solde a les colonnes : Sancerre blanc; Sancerre rouge ...)
Il faut donc que la formule aille chercher selon les entêtes de colonnes.
 

Chubby

XLDnaute Impliqué
[Re à vous deux,
Goube dans ta formule: =INDIRECT("Entrées.xlsx!T"&TEXTE($A$2;"mmmm")&"[[#Totaux];["&B$6&"]]")
>>>T"&Texte ... veut dire que l'on va chercher dans les plages nommées les T avec une suite donnée en A2?
>>> [#Totaux] ... comment sélectionnes tu cette colonne?
Merci pour ton éclairage
 

goube

XLDnaute Impliqué
re,
T"&TEXTE($A$2;"mmmm") donne le nom du tableau TJanvier ou TFévrier,
[#Totaux] correspond à la ligne total du tableau Entrée
[[#Totaux];["&B$6&"]] donne le total de la colonne Sancerre blanc

La fonction indirect
=INDIRECT("Entrées.xlsx!T"&TEXTE($A$2;"mmmm")&"[[#Totaux];["&B$6&"]]")
permet de reconstruire la formule suivante
=Entrées.xlsx!TJanvier[[#Totaux];[Sancerre blanc]]
Cordialement.
 

job75

XLDnaute Barbatruc
Il faut donc que la formule aille chercher selon les entêtes de colonnes.
OK alors utilisez cette formule en B15 du fichier Solde.xlsx :
Code:
=RECHERCHE(9^9;INDEX([Entrées.xlsx]janvier!$A:$IV;;EQUIV(B6;[Entrées.xlsx]janvier!$2:$2;0)))
à tirer vers la droite. Pour la feuille février remplacez janvier par février.
 

Pièces jointes

  • Entrées.xlsx
    10.6 KB · Affichages: 4
  • Solde.xlsx
    13 KB · Affichages: 5

Chubby

XLDnaute Impliqué
Bonjour Job, Goube et les zôtres,
D'abord un grand merci à vous deux pour votre aide. Un peu trop occupé à autre chose hier pour revenir sur le site.
Job, pourrais tu m'expliquer ta formule. J'ai quelques difficultés à la mettre en oeuvre. J'ai repris ta formule et elle donne ça:
=RECHERCHE(9^9;INDEX('[Entrées(2).xlsx]janvier'!$A:$AM;;EQUIV(B6;'[Entrées(2).xlsx]janvier'!$2:$2;0)))
. Des apostrophes sont positionnées pour le fichier. J'ai voulu recopier tout ça dans le contexte des fichiers originaux et là le néant. En validant les ' disparaissent j'obtiens un #N/A.
=RECHERCHE(9^9;INDEX([B_E.xls]janvier!$A:$IV;;EQUIV(F6;[B_E.xls]janvier!$2:$2;0)))
et ça se transforme automatiquement en
=RECHERCHE(9^9;INDEX([B_E.xls]janvier!$1:$65536;;EQUIV(F6;[B_E.xls]janvier!$2:$2;0)))
et là je ne comprends plus rien.
Au delà penses tu qu'il serait possible qu'à la place de nommer l'onglet on puisse le récupérer automatiquement (en ajoutant ce même nom dans le fichier où on positionne la formule. Suis je clair (?)
Merci d'avance.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Chubby, le forum,

Je n'ai pas constaté de problème en changeant le nom du fichier Entrées.xlsx.

Ouvrez les 2 fichiers et dans les formules remplacez Entrées par Entrées(2).

Il y a effectivement des apostrophes à cause du nombre (2).

Maintenant refermez tout, enregistrez le fichier source en B_E.xls.

Ouvrez les 2 fichiers et dans les formules remplacez Entrées(2).xlsx par B_E.xls.

Les apostrophes disparaissent.

Il n'y a rien d'autre à faire mais il faut faire tout ça sans se tromper.

A+
 

Chubby

XLDnaute Impliqué
Bonjour Job,

Merci de ton intérêt à mon problème.
J'ai vérifié ce que tu me dis. Je rencontre toujours le même problème.
J'ai donc réduit les fichiers pour que tu les vois dans leur présentation. Le fichier DR recevant les info du fichier B_E.
Je suis sûr que tu vas trouver la faille qui fait que je tourne en rond depuis un petit moment.
Je t'en remercie d'avance
 

Pièces jointes

  • B_E.xls
    55 KB · Affichages: 3
  • DR.xls
    258 KB · Affichages: 2

Discussions similaires