XL 2016 Si avec conditions et recherche de valeur

cardi

XLDnaute Junior
Bonjour à tous,

Je suis bloqué sur une formule simple je pense :

Dans un tableau j'ai 2 colonnes (B et C) :

Colonne B, j'ai des niveaux 1, 2 ou 3

Colonne C, des valeurs

Dans la colonne E, je cherche à calculer des valeurs en multipliant les niveaux, par exemple la valeur E4:

Si B8 = 1 alors E8 = C8
Si B8 = 2 alors E8 = C8 * la prochaine valeur au dessus ayant le niveau 1
Si B8 = 3, alors E8 = C8 * la prochaine valeur au dessus ayant le niveau 2 * la prochaine valeur au dessus ayant le niveau 1

Dans le ficher joint, par exemple pour la valeur E 11 :

B 11 = 3 soit E11 = C11 * C10 * C8

Merci d'avance,

CARDI
 

Pièces jointes

  • Cardi2.xlsx
    8.7 KB · Affichages: 9
Dernière édition:

cardi

XLDnaute Junior
Bonjour,

Cela ne fonctionne pas de mon côté. Effectivement en B1 il n'y a rien, j'ai mis à jour mon message.

Si B8 = 1 alors E8 = C8
Si B8 = 2 alors E8 = C8 * la prochaine valeur au dessus ayant le niveau 1
Si B8 = 3, alors E8 = C8 * la prochaine valeur au dessus ayant le niveau 2 * la prochaine valeur au dessus ayant le niveau 1
 

Pièces jointes

  • Cardi2.xlsx
    8.7 KB · Affichages: 3

JBARBE

XLDnaute Barbatruc
Re,
Peut-être maintenant :
=SI(B8=1;C8;SI(ET(B8=2;C7=1);C7*1;SI(ET(B8=3;C7=1);C7*2*1;SI(ET(B8=3;C7=2);C7*2*1;""))))
Bonne journée !
 

Pièces jointes

  • Cardi2-1.xls
    38.5 KB · Affichages: 2
Dernière édition:

cardi

XLDnaute Junior
Votre formule fonctionne seulement si les niveaux 1/2/3 se suivent 1-> 2 -> 3 mais dans mon cas, ce n'est pas le cas :


ligneniveauxquantitévaleurs recherchées
1​
1​
5​
5​
2​
2​
2​
10​
3​
2​
1​
5​
4​
3​
4​
20​
5​
1​
3​
3​
6​
2​
1​
3​
7​
2​
3​
9​
8​
3​
10​
90​
9​
1​
50​
50​
10​
2​
8​
400​
11​
3​
4​
1600​
12​
3​
2​
800​


Par exemple ligne 12 est un niveau 3 avec une quantité de 2. La quantité juste au-dessus en niveau 2 est 8 et la quantité encore plus haut en niveau 1 est 50. Cela donne donc 2 * 8 * 50 = 800

Autres exemples :

Ligne 4 = 4 * 1 * 5 = 20
Ligne 10 = 8 * 50 = 400
Ligne 3 = 1 * 5 = 5

Il faut a chaque fois remonter au niveau inférieur pour récupérer la valeur associée.

Merci.
 

JBARBE

XLDnaute Barbatruc
Re,
Voici ce que j'ai pu faire avec une macro ( difficile avec formules )
La ligne 12 je trouve 150 au lieu de 50 ! ( qui a raison ?)
Quant à la ligne 4 compte tenu qu'il n'y a rien au dessus la macro m'affiche 10 au lieu de 5 ( mais ça je peux se corriger en évitant que la macro fasse les même calcul sur cette ligne !
 

Pièces jointes

  • Cardi2-1.xls
    56.5 KB · Affichages: 3

JHA

XLDnaute Barbatruc
Bonjour à tous,

A essayer cette formule matricielle:
VB:
=SI($B4=1;$C4;SI($B4=2;$C4*SIERREUR(INDEX(C$3:C3;PETITE.VALEUR(SI(B$3:B3=1;LIGNE(B$3:B3)-2);NB.SI(B$3:B3;1)));0);SI($B4=3;$C4*SIERREUR(INDEX(C$3:C3;PETITE.VALEUR(SI(B$3:B3=2;LIGNE(B$3:B3)-2);NB.SI(B$3:B3;2)));0)*SIERREUR(INDEX(C$3:C3;PETITE.VALEUR(SI(B$3:B3=1;LIGNE(B$3:B3)-2);NB.SI(B$3:B3;1)));0))))
A valider par Ctrl+Maj+Entrée

JHA
 

Pièces jointes

  • Cardi2.xlsx
    10.1 KB · Affichages: 2

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour Cardi, JBARBE:) , JHA :),

alors ma pierre à l'édifice comme JHA une formule matricielle à priori un peu plus courte que celle de JHA je joint le premier fichier de de JBARBE dans lequel j'ai ajouté ma pierre et celle de JHA

Cordialement

EDIT a priori ligne 12 la valeur reste a 50 puisque que le niveau est a 1 on ne va pas chercher au dessus comme pour par exemple la ligne 8 du moins suivant ma compréhension
 

Pièces jointes

  • Cardi2-1.xls
    47 KB · Affichages: 5
Dernière édition:

JBARBE

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour Cardi, JBARBE:) , JHA :),

alors ma pierre à l'édifice comme JHA une formule matricielle à priori un peu plus courte que celle de JHA je joint le premier fichier de de JBARBE dans lequel j'ai ajouté ma pierre et celle de JHA

Cordialement

EDIT a priori ligne 12 la valeur reste a 50 puisque que le niveau est a 1 on ne va pas chercher au dessus comme pour par exemple la ligne 8 du moins suivant ma compréhension
Bonjour jocelyn, Cardi, JHA,
EDIT a priori ligne 12 la valeur reste a 50 puisque que le niveau est a 1 on ne va pas chercher au dessus comme pour par exemple la ligne 8 du moins suivant ma compréhension
Pour la ligne 8 >>>Niveau 1 quantité 3 >>>3 Ligne 6 Niveau 2 Quantité 1 >>> 3 * 1 = 3
Cardi a dit si je ne me trompe post#1:
Si B8 = 2 alors E8 = C8 * la prochaine valeur au dessus ayant le niveau 1
Si B8 = 3, alors E8 = C8 * la prochaine valeur au dessus ayant le niveau 2
Pour moi il est question de la prochaine valeur au dessus dans tout les cas !
Mais attendons la réponse de Cardi qui n'a pas été trés précis dans sa demande jusqu'à maintenant mis à part ses solutions !
Bonne soirée !
 
Dernière édition:

cardi

XLDnaute Junior
bonjours à tous,

Merci beaucoup, les solutions de Jocelyn et JHA fonctionnent parfaitement.

Je préfère cette solution plutôt qu'une macro.

Effectivement la ligne 12, la valeur doit bien être à 50 car on est en niveau 1.

Vous m'enlever une bonne épine du pied, je n'aurai jamais réussi tout seul.

Bonne journée à tous
 

JBARBE

XLDnaute Barbatruc
bonjours à tous,
Effectivement la ligne 12, la valeur doit bien être à 50 car on est en niveau 1.
Bonne journée à tous
Bonjour cardi, tous, toutes,
Malgré ton désaccord avec comme solution une macro, je n'ai toujours pas compris cette solution ligne 12 car il y a toujours un niveau 1 et un niveau 2 d’après ta demande !
Ligne 12 > 1 Ligne 10 > 2 = 50 * 3=150
Ligne 8 > 1 ligne 6 > 2 = 3 * 1 = 3
Bien entendu la Ligne 12 avec tes 50 pouvait se faire par macro !
Mais le fait comme tu le dit ( car on est en niveau 1 ) me laisse pantois !
Bonne journée !
 

Discussions similaires

Réponses
2
Affichages
127

Statistiques des forums

Discussions
312 203
Messages
2 086 193
Membres
103 153
dernier inscrit
SamirN