Récupérer une valeur dans une table à partir de 2 données

touristeamateur

XLDnaute Nouveau
Bonjour,

En cherchant (et j'ai cherché beaucoup), j'ai vu que la question revient souvent, mais je ne comprends pas bien les réponses alors je vous présente et mon problème, et mes excuses car je suis sûr que la solution a déjà été proposée :

Dans une feuille j'ai créé une table avec les tarifs selon les produits et les fournisseurs.
Dans une autre feuille, je voudrais afficher automatiquement le tarif lorsque j'ai saisi le fournisseur et le produit.

Le fichier comprend une quarantaine d'onglets, donc il faut bien aller chercher la valeur dans l'onglet "Tarifs"

Est-il possible également de choisir le nom du fournisseur dans un menu déroulant et que la formule fonctionne ?
Même question pour le produit. Mais question plus de "culture générale" car je ne créerai sans doute pas menu déroulant car j'en ai une centaine alors que je n'ai qu'une dizaine de fournisseurs.

Grand merci d'avance.
 

Pièces jointes

  • Tableau prix - Fss.xlsx
    12.6 KB · Affichages: 18
  • Tableau prix - Fss.xlsx
    12.6 KB · Affichages: 28
  • Tableau prix - Fss.xlsx
    12.6 KB · Affichages: 24
Dernière édition:

Dugenou

XLDnaute Barbatruc
Re : Récupérer une valeur dans une table à partir de 2 données

Bonjour,

Voir pj avec explications

Cordialement
 

Pièces jointes

  • touriste index double equiv.xlsx
    54.1 KB · Affichages: 34
  • touriste index double equiv.xlsx
    54.1 KB · Affichages: 32
  • touriste index double equiv.xlsx
    54.1 KB · Affichages: 25

Dugenou

XLDnaute Barbatruc
Re : Récupérer une valeur dans une table à partir de 2 données

Pour le fun,
le même avec des listes déroulantes enchainées pour les produits
il faut une colonne de plus avec la famille de produit qui ne sert qu'à afficher la bonne liste déroulante de produits
évidemment il faudra ajouter les produits dans le tarif
si tu as beaucoup de produits et pas trop de forunisseurs, il vaudrait mieux inverser le tableau de tarif pour avoir les produits en lignes.
Inverser aussi les equiv dans la formule

cordialement
 

Pièces jointes

  • touriste index double equiv V2.xlsx
    54.8 KB · Affichages: 29

touristeamateur

XLDnaute Nouveau
Re : Récupérer une valeur dans une table à partir de 2 données

Merci pour le 2ème envoi que je n'ai pas encore exploré (je suis "Excel débutant - -" et ça me prend du temps !).
Bien noté pour l'inversion dans la table "Fss - Produit". Je le ferai.

Question, stp : Dans la formule d'identification du prix, est-il possible de remplacer " 'Factures Septembre'! " qui doit donc désigner la feuille de Septembre par quelque chose qui dirait " cet onglet là", pour "universaliser" la formule pour chaque onglet des mois de l'année ?

Nota :
Je pense que je vais avoir encore plein de questions, si tu en es d'accord !

Cordialement
 

Dugenou

XLDnaute Barbatruc
Re : Récupérer une valeur dans une table à partir de 2 données

Pas de problème pour les questions : c'est l'objet de ce site.
Mais n'hésites pas à créer un nouveau sujet quand l'objet de la question change même si le fichier de travail est le même : cela facilité les recherches ultérieures et peut amener d'autres personnes à te répondre.
Pour l'onglet : pas de pb tu peux :
1) utiliser la syntaxe suivante :
=INDEX(Tarifs!$C$3:$L$12;EQUIV(B4;Tarifs!$B$3:$B$12;0);EQUIV(C4;Tarifs!$C$2:$L$2;0))
puis copier cette formule dans les autres feuilles
2) faire une copie de la feuille septembre et la renommer octobre puis changer les données
l'ajout d'un sierreur permettra d'éviter d'afficher des #NA quand il n'y a pas de fournisseur ou de produit
=SIERREUR(INDEX(Tarifs!$C$3:$L$12;EQUIV(B4;Tarifs!$B$3:$B$12;0);EQUIV(C4;Tarifs!$C$2:$L$2;0));"")

Cordialement
 

touristeamateur

XLDnaute Nouveau
Re : Récupérer une valeur dans une table à partir de 2 données

Une question sur la formule, stp :
Quand tu écris :
"=INDEX(Tarifs!$C$3:$M$12;EQUIV('Factures Septembre'!B4;Tarifs!$B$3:$B$12;0);EQUIV('Factures Septembre'!D4;Tarifs!$C$2:$M$2;0))" : c'est pour qu'Excel aille chercher dans toute la table, c'est ça ?
Est-ce que par anticipation je peux écrire :
"=INDEX(Tarifs!$C$3:$ZZ$99;EQUIV('Factures Septembre'!B4;Tarifs!$B$3:$B$99;0);EQUIV('Factures Septembre'!D4;Tarifs!$C$2:$ZZ$12;0))) pour anticiper si j'ajoute plus tard des produits et/ou des Fss
(En gras, les modifs proposées)
J'ai testé sur un exemple, ça a l'air de fonctionner ...



Nota:
"Mais n'hésites pas à créer un nouveau sujet quand l'objet de la question change même si le fichier de travail est le même"Bon du coup, c'est ce que j'ai fait pour la MFC !
 

Dugenou

XLDnaute Barbatruc
Re : Récupérer une valeur dans une table à partir de 2 données

Oui tu as bien compris pour les zones d'équiv et d'index
tu peux aussi enlever la partie en rouge ci dessous
=INDEX(Tarifs!$C$3:$M$12;EQUIV('Factures Septembre'!B4;Tarifs!$B$3:$B$12;0);EQUIV('Factures Septembre'!D4;Tarifs!$C$2:$M$2;0))
Dans l'idéal, si tu déclares tes données en Tableau (insertion/tableau) et tu refais les formules qui vont alors s'écrire :
=INDEX(Tableau2;EQUIV(B4;Tableau2[fournisseurs];0);EQUIV(C4;Tableau2[#En-têtes];0))

et quand tu ajouteras des lignes ou des colonnes à ton index des prix, ça s'adaptera tout seul par l'opération de saint Microsoft !

voir pj
 

Pièces jointes

  • touriste index double equiv.xlsx
    60.5 KB · Affichages: 17
  • touriste index double equiv.xlsx
    60.5 KB · Affichages: 22
  • touriste index double equiv.xlsx
    60.5 KB · Affichages: 23

touristeamateur

XLDnaute Nouveau
Re : Récupérer une valeur dans une table à partir de 2 données

Merci.
Ne sois pas surpris si je suis long à réagir (alors que toi tu réponds rapidement), mais je cherche à bien comprendre et c'est long pour moi :confused:

En plus je viens de passer du pack office 2003 à 2010 (oui, je sais, je ne suis pas en avance...) et je suis perdu dans l’ergonomie!
 
Dernière édition:

touristeamateur

XLDnaute Nouveau
Re : Récupérer une valeur dans une table à partir de 2 données

Bon, j'en suis encore à comprendre la formule! Là, je crois que j'ai compris le principe.

J'ai encore une interrogation car j'ai quelque chose qui ne fonctionne pas.
Suivant les conseils, et pour m'entraîner sur la formule, j'ai inverser ma table de données pour avoir les produits en lignes car j'en aurai une centaine pour seulement une dizaine de fournisseurs que j'ai donc mis en colonne.
J'ai modifié la formule. Mais elle ne donne pas les bons résultats (voir tableau joint). En fait, pour avoir les bons résultats il faut que j'inverse l'ordre des 2 fonctions Equiv et là ça marche. Et je ne comprends pas pourquoi. Il y a un ordre dans les données à aller chercher ? Si oui, quelle règle ?

Merci d'avance
 

Pièces jointes

  • touriste index double equiv version inversion données.xlsx
    54.4 KB · Affichages: 24

Dugenou

XLDnaute Barbatruc
Re : Récupérer une valeur dans une table à partir de 2 données

Bonjour,
en effet il faut aussi inverser les deux Equiv puisque l'un recherche les fournisseurs et l'autre les produits et que la syntaxe de la fonction index est fixée ainsi (voir l'aide sur le fonction ou l'assistant : index(N° de ligne, N° de colonne) si tu mets en colonnes les fournisseurs qui étaient en lignes il faut adapter dans ta formule :
avant tu avais : index(N° de la ligne du fournisseur; N° de la colonne produit) et maintenant tu veux Index(N° de la ligne du produit, N° de colonne du fournisseur)
soit :
Code:
=INDEX(Tarifs!$C$3:$L$12;EQUIV('Factures Septembre'!D4;Tarifs!$B$3:$B$12;0);EQUIV('Factures Septembre'!C4;Tarifs!$C$2:$L$2;0))
Cordialement
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
297

Statistiques des forums

Discussions
312 206
Messages
2 086 201
Membres
103 156
dernier inscrit
Ludo94130