Afficher une valeur suivant conditions depuis un tableau

Résolu/Fermé
Karbo - Modifié le 23 janv. 2020 à 11:21
 Karbo - 23 janv. 2020 à 13:00
Bonjour,

Comme expliqué dans le titre, je souhaite récupérer une valeur suivant 3 conditions depuis un tableau.

Le fichier est composé de deux onglets.

Explications « onglet1 » :
- Chaque ligne saisie correspond à une configuration.
- Chaque configuration est valide si la cellule de la colonne « i » correspondante passe à « ACTIF »
o Valide = donnée exploitable pour le résultat
- Elle devient invalide si la cellule de la colonne « i » correspondante passe à « INACTIF »
o Invalide = donnée non exploitable pour le résultat ; mais consultable pour l’historique…

Dans l’« onglet1 », il y a le tableau de valeurs que l’on va saisir une fois.
- De i163 à i192 : Toutes les cellules peuvent afficher « ACTIF » ou « INACTIF » suivant une liste déroulante -> […Il n’y aura pas d’autre cas qu’actif ou inactif…]
- De M163 à M192 : Toutes les cellules peuvent afficher « ROUGE » ou « NOIRE » suivant une liste déroulante -> […D’autres couleurs seront ajoutées par la suite…]
- De P163 à P192 : Une date sera saisie dans la ligne correspondante  Invalide pour le résultat
- De T163 à T192 : Toutes les cellules peuvent afficher « BOULE » ou « CARRE » suivant une liste déroulante -> […D’autres formes seront ajoutées par la suite…]
- De Y163 à Y192 : Une information complémentaire sera saisie dans la ligne correspondante -> Invalide pour le résultat
- De AG163 à AG192 : Une valeur sera saisie dans chaque ligne correspondante  Valide pour le résultat

Dans l’« onglet2 », c’est le résultat (cellule J14) qui sera affiché selon les paramètres sélectionnés (couleur / forme)
- B8 : Cette cellule contient la couleur « ROUGE » ou « NOIRE » suivant une liste déroulante
- E9 : Cette cellule contient la forme « BOULE » ou CARRE » suivant une liste déroulante
- J14 : Cellule qui doit afficher le résultat de la formule/équation finale

Objectif :
- Si une configuration est valide (onglet 1) ET que les paramètres sélectionnés dans l’onglet 2 correspondent aux paramètres de cette ligne/configuration (onglet 1), alors la valeur de la cellule correspondante dans la colonne AG (onglet 1) sera affiché sur l’onglet 2 en cellule J14
o A savoir que je m’assurerai qu’il n’y ait pas plus de 4 ACTIFS max
> 2 actifs pour la couleur rouge
• 1 actif pour la boule
• 1 actif pour le carre
> 2 actifs pour la couleur noire
• 1 actif pour la boule
• 1 actif pour le carre

On va prendre pour exemple la ligne 163, et on va dire que j’ai sélectionné dans l’onglet 2 « boule » en E9 et « rouge » en B8
- Cas 1 : Si i163 est inactif alors pas de lecture de AG163 en onglet 2 J14
- Cas 2 : Si i163 est « actif » alors lecture possible de AG163. Vérification : si m163 vaut B8 et que t163 ne vaut pas E9 alors pas de lecture de AG163 en onglet 2 J14
- Cas 3 : Si i163 est « actif » alors lecture possible de AG163. Vérification : si m163 ne vaut pas B8 et que t163 vaut E9 alors pas de lecture de AG163 en onglet 2 J14
- Cas 4 : Si i163 est « actif » alors lecture possible de AG163. Vérification : si m163 vaut B8 et que t163 vaut E9 alors lecture de AG163 en onglet 2 J14 -> résultat affiché

mais je souhaite que la formule/méthode/macro choisie permette de réaliser cette lecture de cellule pour le tableau complet (des lignes 163 à 192) et non juste une seule ligne

Pouvez vous me donner un coup de pouce svp ?

S’il faut plus d’informations, n’hésitez pas.

Bonne journée.

Fichier dispo à ce lien : https://www.cjoint.com/c/JAxkul7gnna

Sous Excel office 365
Configuration: Windows / Chrome 79.0.3945.130

1 réponse

-NoeGo- Messages postés 52 Date d'inscription mercredi 28 décembre 2016 Statut Membre Dernière intervention 7 mai 2021 11
Modifié le 23 janv. 2020 à 12:30
Bonjour,

Voici la fonction que j'ai créé qui, je pense répondra à votre demande :
=SIERREUR((INDEX(onglet1!A163:A191;EQUIV(B8&E9&"ACTIF";onglet1!M163:M191&onglet1!T163:T191&onglet1!I163:I191;0)));"Non trouvé")

L'idée est la suivante : EQUIV(B8&E9&"ACTIF";onglet1!M163:M191&onglet1!T163:T191&onglet1!I163:I191;0)))
Cette partie me sert à regarder dans les colonnes M T et I de l'onglet 1, si je trouve les données de B8, E9 et "ACTIF" dans le même ordre.
INDEX(onglet1!A163:A191...
Si j'ai trouvé ce que je cherche avec la partie EQUIV(...., je récupère les infos qui sont dans la colonne A du tableau de l'onglet 1.
=SIERREUR(...;"Non trouvé")
Si je ne trouve rien, j'affiche "Non trouvé"

Attention, c'est une formule matricielle qu'il faut donc valider en faisant Ctrl + Shift + Entree.
De plus, une formule matricielle ne peut pas se trouver dans une cellule fusionnée... C'est pour cela que j'ai mis la formule en J15 dans le fichier ci-dessous.

N'hésitez pas si vous avez des questions.

Fichier joint : https://www.cjoint.com/c/JAxlisnCGIV
1
Merci, Cela fonctionne. C'est parfait !.
Merci pour les explications !
0