Fonction Index et Equiv, double condition

neth

XLDnaute Nouveau
Bonjour,

Après avoir cherché partout sur le forum des solutions à des problèmes similaires au mien, je n'ai toujours pas trouvé une méthode fonctionnelle pour réussir ce que je souhaite.

J'utilise une fonction matricielle pour obtenir les valeurs répondant "vrai" à une double condition (date et typologie de voiture) : =INDEX(Nameplate_;EQUIV(1;(Month_=$G$3)*(Type_="Cars");0)).

Cependant, cette formule ne me retourne que le premier résultat de la liste... Or, j'aimerais justement pouvoir lister toutes les valeurs répondant à mes conditions (voir fichier joint).

Merci d'avance à celui qui saura m'éclairer !
 

Pièces jointes

  • Classeur1.xlsx
    11 KB · Affichages: 78
  • Classeur1.xlsx
    11 KB · Affichages: 91
  • Classeur1.xlsx
    11 KB · Affichages: 100
Dernière édition:

neth

XLDnaute Nouveau
Re : Fonction Index et Equiv, double condition

Ah zut, j'en ajoute un doublon dans cette réponse ! Merci pour ton attention ! :)
 

Pièces jointes

  • Classeur2.xlsx
    11 KB · Affichages: 105
  • Classeur2.xlsx
    11 KB · Affichages: 117
  • Classeur2.xlsx
    11 KB · Affichages: 110
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Fonction Index et Equiv, double condition

Bonsoir

Essayes avec :
Code:
INDEX(Nameplate_;PETITE.VALEUR(SI((Month_=$G$3)*(Type_="Cars")=1;LIGNE(Month_));LIGNES(G$7:G7)))

en matriciel, autrement dit à valider avec ctrl+maj+entrer.

Cela risque de prendre beaucoup de temps de calcul si tes colonnes sont grandes. Tu ferais mieux de définir tes noms en dynamique, histoire de ne travailler que sur la hauteur réelle des colonnes, et pas sur la totalité des colonnes A:A, B:B et C:C.

@ plus
 

neth

XLDnaute Nouveau
Re : Fonction Index et Equiv, double condition

Bonsoir

Cela risque de prendre beaucoup de temps de calcul si tes colonnes sont grandes. Tu ferais mieux de définir tes noms en dynamique, histoire de ne travailler que sur la hauteur réelle des colonnes, et pas sur la totalité des colonnes A:A, B:B et C:C.

Extra, ça marche très bien et en plus cette formule est facilement compréhensible.
Merci du conseil pour les colonnes. Je commence à peine à utiliser Excel et ce logiciel commence déjà à beaucoup m'amuser. :)
 

vinsouth

XLDnaute Nouveau
Re : Fonction Index et Equiv, double condition

Bonjour,

Je remonte ce sujet car je n'arrive pas à trouver de solution à cette question de la double condition d'un EQUIV dans une fonction plus globale INDEX.

J'ai essayé la formule proposée ici par Cisco, qui ne fonctionne pas dans mon cas, et d'autres pistes trouvées sur le forum, par exemple ici; ici ou

Pour résumer, voici les tentatives faites pour introduire 2 conditions à l'Equiv, afin que l'index renvoi un texte positionné à l'intersection des 2 conditions, sachant qu'il y a des doublons dans la base initiale (d'où la nécessité de 2 conditions).


INDEX(PlageCible;EQUIV(Critère1;PlageCritère1;0);EQUIV(Critère2;PlageCritère2;0))

INDEX(PlageCible;EQUIV(Critère1;PlageCritère1;0)*EQUIV(Critère2;PlageCritère2;0)) - validation matricielle ou pas.

INDEX(PlageCible;EQUIV(1;SOMMEPROD((Critère1;PlageCritère1;0)*(Critère2;PlageCritère2;0));0))- validation matricielle ou pas.


Ma question porte en fait plus largement sur la syntaxe d'un EQUIV pour qu'il renvoie à l'INDEX une position Ligne;Colonne remplissant 2 conditions.

Je précise enfin que j'essaye de reconstruire un tableau d'ensemble avec une fonction à étirer.

Pour essayer d'être un peu plus clair, voici en pj un petit fichier (fictif) qui reprend la structure de ma base réelle et celle que je souhaite construire, avec les tentatives faites jusque là.

Si un oeil averti arrive à me décrypter et à m'aider à comprendre ce qui cloche, je suis très preneur.

J'ai bien besoin d'y voir clair, car je risque d'avoir à utiliser cette manip dans diverses situations - n'étant pas opérationnel en VBA, je cherche vraiment une solution sous forme de formules que je puisse comprendre et réadapter ailleurs. J'ai l'impression qu'il ne manque pas grand chose pour y être !

Merci d'avance aux sympathiques contributeurs qui pourront m'aider.

Vins.
 

Pièces jointes

  • Test double condition.xlsx
    11.4 KB · Affichages: 50

Jocelyn

XLDnaute Barbatruc
Re : Fonction Index et Equiv, double condition

Bonjour le Forum,
Bonjour neth, CISCO, vinsouth,

Voir la formule en G5 attention dans la partie EQUIV de la formule ne pas oublier le dernier critère ici le 0 pour dire valeur exacte bien sur formule matricielle

Cordialement

Jocelyn

EDIT pour le Fun une formule qui passe par un sommeprod voir en G12 donc sans la validation matricielle
 

Pièces jointes

  • double condition.xlsx
    12.3 KB · Affichages: 75
  • double condition V1.xlsx
    12.6 KB · Affichages: 75
Dernière édition:

vinsouth

XLDnaute Nouveau
Re : Fonction Index et Equiv, double condition

Bonjour Jocelyn,

Un grand merci et un grand chapeau pour cette (double) solution qui fonctionne à merveille, yc sur ma grande BD "réelle".

Juste pour que je comprenne bien, et que je puisse m'approprier et réutiliser tout ça, pourrais-tu (encore) m'éclairer sur 2 points :

- Dans la solution 1 , j'imagine que l'ordre de présentation des arguments de l'EQUIV (critère1&critère2;plagecritère1&plagecritère2) est importante ? Et est-ce que le fait de valider cette formule en matriciel permet d'avoir une sorte d'équivalent à un sommeprod affichant un résultat de type "Ligne;colonne" ?

- Dans la solution 2 "pour le fun" (^^), alors, je ne comprend pas ce que produit le indirect (A1;A9), comment la fonction LIGNE permet de renvoyer le 1; et à quoi sert ce 1 : est-ce le numéro de colonne ? Enfin, quel intérêt de rajouter ce dernier argument qui renvoie toujours la valeur "1" aux deux autres conditions du sommeprod (plage1=critère1)*(plage2=critère2), et ce pour construire l'équiv...

Dans tous les cas, un grand merci pour cette solution rapide !

V.
 

Jocelyn

XLDnaute Barbatruc
Re : Fonction Index et Equiv, double condition

Re bonjour vinsouth,

bon l'écriture n'est pas mon fort mais je vais essayer de t'expliquer

La solution qui passe par =SIERREUR(INDEX(statut;EQUIV($F5&G$4;Eleve&cours;0));"-")

Index tu connais je pense donc concernat le EQUIV la première partie corre"spond a la valeur cherchée ici en faisant $F5&G$4 la valeur va être TitiBio soit "nomcours" il faut donc que la plage de recherche soit elle aussi "nomcours" d'ou la plage elevecours ensuite il faut songer a mettre le dernier critère soit le 0 de façon a ce que la recherche se fasse sur la valeur exacte le besoin de validation matricielle est dut au fait q"en concaténant des données il faut qu'excel recrée sa propre matrice de travail

La solution qui passe par : SIERREUR(INDEX(statut;SOMMEPROD((Eleve=$F12)*(cours=G$11)*LIGNE(INDIRECT("A1:A"&LIGNES(cours)))));"-")

ici c'est le SOMMEPROD qui permet de déterminé le numéro de ligne a prendre donc ces 2 partie la permettent de déterminer a quel endroit ce trouve les valeur recherchées comme il n'y a pas de valeur chifrées pas possible de faire une addition pas possible de compter non plus car effectivement suivant l'exemple le résultat sera toujours 1 alors on passe par le biais de la fonction ligne()

ligne() dans son fonctionnement permet de renvoyer le numéro de ligne sur laquelle elle se trouve donc ici on dit a sommeprod additionne moi les numùéro de ligne qui correspondent a mes 2 critère sauf que par rapport a la formule que je prend en exemple le résultat serait 5 (ligne sur laquelle se trouve en même temps Titi et bio) et suivant la base de l'index la 5 éme ligne serait celle de math et toto le résultat serait bien "réussite " mais ca ne marchera pas a chaque fois

Alors pour régulariser cela on modifier le calcul de la ligne en la faisan repartir de la ligne 1 grace a la fonction indirect ("A1:A"&lignes(plage' de recherche)) ou ligne avec un S ne donne plus le numéro de ligne mais le nombre de ligne ce qui fait en fin de compte que sommeprod va additioner une ligne entre 1 et 9 "ligne(A1:A9)" comme les valeur cherchées se trouve sur la premier ligne de la plage le résultat du sommeprod va être cette fois 1 et donc bien correspondre

Bon ben voila si ce n'est pas suffisament clair n'hésite pas

Cordialement
 

vinsouth

XLDnaute Nouveau
Re : Fonction Index et Equiv, double condition

Bonjour et merci à nouveau

A vrai dire, je ne comprend toujours pas bien le troisième argument du sommeprod, ce que produit la fonction LIGNE.
Je l'ai appliqué sans problème (et sans vraiment comprendre) dans un fichier, et les résultats étaient justes.
La, j'ai au autre cas, où certains résultats sont faux, et je ne me l'explique pas, j'ai du repasser par la solution 1.

Est-ce que le positionnement des colonnes importe dans cette fonction LIGNE ? dans mes pratiques, l'équivalent des colonnes "statut", "éleve" ou "cours" peuvent se trouver à différents endroits, loin à droite en AAXX ou ailleurs. J'image en l'occurrence qu'il faut ajuster le "A" du Indirect("A1:A"&lignes(plage' de recherche)) avec la lettre de colonne où se trouve la plage (colonne) "plage de recherche" ?

Si à l'occasion tu as 5min pour reprendre le détails, je suis preneur. En attendant, la solution 1 m'est plus claire, et elle fait bien le job.
Merci encore,
V.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal