formule SI avec plus de 7 conditions

  • Initiateur de la discussion Initiateur de la discussion thri
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thri

XLDnaute Junior
Bonjour à tous,
Je désirerai trouver une solution pour faire fonctionner cette formule,
elle ne marche pas au dessus de 7 conditions.
Merci de votre aide :silly:
=SI(ET(G2>=0;G2<36);0;SI(ET(G2>=35;G2<70);1;SI(ET(G2>=70;G2<105);2;SI(ET(G2>=105;G2<140);3;SI(ET(G2>=140;G2<175);4;SI(ET(G2>=175;G2<210);5;SI(ET(G2>=210;G2<245);6;SI(ET(G2>=245;G2<280);7;SI(ET(G2>=280;G2<315);8;SI(ET(G2>=315;G2<350);9;SI(ET(G2>=350;G2<385);10;SI(ET(G2>=385;G2<420);11;SI(ET(G2>=385;G2<420);12;SI(ET(G2>=420;G2<455);11;SI(ET(G2>=455;G2<490);12;15))))))
Je pense avec sommeprod!!!! mais il faut qu'elle me renvoie une valeur selon la plage trouvée.
Merci
:silly: :silly:
 
Bonjour,

une réponse simple si tout est numérque

Crée d'abord un tableau avec les colonnes :

Début fin val
0 36 0
35 70 2
70 105 3


A3/a5 = plage début ......

=SOMMEPROD((G2>=A3:A5)*(G2<=B3:B5)*C3:C5)



bon courage
 
Bonjour thri, GIBI

Et l'approche VBA je te propose cette macro qui se rajoute dans le module de ta feuille:


Private Sub Worksheet_Change(ByVal Target As Range)
&nbsp; &nbsp; &nbsp; &nbsp;
Dim bytRetourVal&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; As Byte
&nbsp; &nbsp; &nbsp; &nbsp;
With Target
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'&nbsp; &nbsp; Ne traite qui si la colonne G a partir de la ligne 2
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If .Column = 7 And .Row > 1 Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Select Case .Value
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 0, Is < 36:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 35, Is < 70:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 70, Is < 105:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 2
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 105, Is < 140:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 3
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 140, Is < 175:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 4
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 175, Is < 210:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 5
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 210, Is < 245:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 6
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 245, Is < 280:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 7
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 280, Is < 315:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 8
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 315, Is < 350:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 9
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 350, Is < 385:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 10
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 385, Is < 420:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 11
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 420, Is < 455:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 12
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Is >= 455, Is < 490:&nbsp; &nbsp; &nbsp; &nbsp; bytRetourVal = 15
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End Select
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Cells(.Row, .Column + 1) = bytRetourVal
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp;
End With
End Sub



En passant, tu as deux fois SI(ET(G2>=385;G2<420)

a+
 
La solution de Gibi est parfaite, ça marche impec.....
Merci à Hellboy pour avoir vu la condition en double dans ma formule et pour son code VBA, je le garde au chaud, je ne suis pas très copain avec VBA, je rame pas mal!!!! Il faut que je m'y mette
:silly:
Bonne journée 🙂
 
Bonjour Thri, Monique, Gibi, Hellboy,Dugenou,

Une solution avec EQUIV, un peu tard, mais comme j'ai réfléchi dessus je te donne quand même le résultat:

{=EQUIV(G2;(LIGNE(A1:A15)-1)*35;1)-1}

A saisir sous forme matricielle (Ctrl Maj Entrée).

@+

Gael

Et en plus, ça gère mal le cas =15, donc j'aurais mieux fait de m'abstenir mais j'ai quand même corrigé:

{=EQUIV(G2;(LIGNE(1:15)-1)*35;1)-SI(G2<490;1;0)}

Gael

Message édité par: Gael, à: 17/10/2005 18:20
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
1 K
Retour