Optimisation formule Excel : INDEX, EQUIV

Bonjour,

J'effectue un travail de recherche en médecine c'est pour cela que les données ci-dessous peuvent sembler étrange ( modifié par souci de confidentialité)

L'objectif est le suivant : j'ai deux bases de données, après validation sur une colonne de deux paramètres sur une première base de donnée (date et numéro), il faut attribuer dans la cellule spécifiée le contenu de la 3ème colonne (nombre de petits pains)...

Actuellement je suis arrivé à cette formule : =INDEX(D$9:D$11;EQUIV(B5;B$9:B$11;0);EQUIV(C5;C$9:C$11;0))..

Mais ceci ne fonctionne pas totalement..pourriez vous m'aider à découvrir le problème..

Bonne journée et merci d'avance..

Mickaël

32test.xlsx (8.78 Ko)

Bonjour,

=INDEX(D$9:D$11;EQUIV(B4;B$9:B$11;0))

Cordialement.

Bonjour,

Merci beaucoup j'ai rajouté le facteur date et cela semble marcher :

=INDEX(D$9:D$11;EQUIV(B4;B$9:B$11;0)*ET(EQUIV(C4;C$9:C$11;0)))

Cordialement.

Ce n'est pas parce que ça marche (par hasard ) que c'est correctement formulé.

Ce n'est pas vraiment sorcier de se référer à la syntaxe de chacune des fonctions d'Excel, cela peut éviter pas mal de bévues, mais c'est une pratique qui ne semble plus avoir cours...

Alors ton ajout est tout à fait superflu, ton 2e EQUIV dans la formule initiale était de trop et générait une erreur. Pour arriver à le faire rentrer de toute force dans ta formule sans que cela provoque d'erreur, tu l'incorpores tout seul dans un ET, ce qui n'a pour effet que de le transformer en valeur booléenne. Dans la mesure où cette valeur n'est pas 0, cela renvoie VRAI ! Et le fait de le multiplier conduit à transformer ce VRAI en 1, donc à multiplier ton premier facteur par 1 ! Très rationnel !

Au moins analyse pourquoi ça marche en faisant n'importe quoi, cela te servira peut-être ultérieurement.

Bonjour,

Si je m'adresse à vous c'est justement pour éviter les erreurs..

Comment feriez vous autrement pour intégrer les deux facteurs (dates + numéros) pour donner la 3ème donnée ?

Car sur ma base de donnée la recherche par numéro n'est pas suffisante pour la discrimination..

Merci d'avance.

Bonjour le forum,

Pour intégrer les deux critères de recherche :

=SIERREUR(INDEX($D$9:$D$11;EQUIV(1;($B$9:$B$11=B4)*($C$9:$C$11=C4);0));"***")

Formule matricielle à valider avec CTRL MAJ ENTREE

Bonjour,

Merci pour votre réponse mais elle ne correspond pas à ce que je veux...

J'aurais une base de donnée avec près de 200 000 lignes et je souhaiterais qu'après validation des deux critères, la formule me redonne le 3ème élément (ici les pains au chocolat)

Comment feriez vous autrement pour intégrer les deux facteurs (dates + numéros) pour donner la 3ème donnée ?

Car sur ma base de donnée la recherche par numéro n'est pas suffisante pour la discrimination.

Dans ce cas (recherche multi-conditionnelle), on utilise habituellement SOMMEPROD :

=SOMMEPROD(($B$9:$B$11=$B4)*($C$9:$C$11=$C4)*$D$9:$D$11)

Cordialement.

RYCHEN a écrit :

L'objectif est le suivant : j'ai deux bases de données, après validation sur une colonne de deux paramètres sur une première base de donnée (date et numéro), il faut attribuer dans la cellule spécifiée le contenu de la 3ème colonne (nombre de petits pains)...

RYCHEN a écrit :

Merci beaucoup j'ai rajouté le facteur date et cela semble marcher :

=INDEX(D$9:D$11;EQUIV(B4;B$9:B$11;0)*ET(EQUIV(C4;C$9:C$11;0)))

RYCHEN a écrit :

Merci pour votre réponse mais elle ne correspond pas à ce que je veux...

???

nbre

Ma première formule pointait bien la ligne 4.

Sur la 2e (sommeprod) je l'ai copiée sur la 2e ligne ! Il fallait donc la mettre sur la ligne 5, ce qui tombe sous le sens.

Crois-tu faire oeuvre intelligente avec ton illustration ?

MFerrand a écrit :

Ma première formule pointait bien la ligne 4.

Sur la 2e (sommeprod) je l'ai copiée sur la 2e ligne ! Il fallait donc la mettre sur la ligne 5, ce qui tombe sous le sens.

Crois-tu faire oeuvre intelligente avec ton illustration ?

Ta première formule ne tient pas compte du critère "Date".

Bien que mon Q.I. soit, bien évidemment, très inférieur au tien, j'avais essayé ta formule sur la ligne 5, tirée vers le haut et ligne 5 tirée vers le bas.

Mais :

qte

Voilà pour clarifier :

13e50gm
MFerrand a écrit :

on utilise habituellement SOMMEPROD :

=SOMMEPROD((B$9:B$11=B5)*(C$9:C$11=C5)*D9:D11)

Donc : penser à bien copier la formule sur la ligne 5, puis la tirer vers le haut, puis vers le bas.

Et penser à la modifier :

=SOMMEPROD((B$9:B$11=B5)*(C$9:C$11=C5)*$D$9:$D$11)

Je l'ai modifiée, cela évitera des erreurs.

Rechercher des sujets similaires à "optimisation formule index equiv"