Formule complèxe EXCEL

Résolu
EXCELLENT -  
 Utilisateur anonyme -
Bonjour,

Après m'être tortillé les neurones sur une formule EXCEL, il m'affiche un message comme quoi ma formule est trop longue :(

=SI(B22<301;B22*3;SI(ET(B22>301;B22<1920);B22*2);SI(ET(B22>1921;B22<3360);B22/2))

En gros, je souhaite que ma formule calcul un montant compris entre plusieurs montant :
Si x est compris entre 0 et 301 alors multiplie x par 3 et si x est compris entre 301 et 1920 alors multiplie x par 2 et si x est compris entre 1921 et 3360 alors multiplie x par 0.5. Tout en cumulant les montants précédemment multipliés....Vous me suivez? :)

Ma formule est bonne (je pense) mais elle est trop longue selon excel...alors avez-vous une autre suggestion de formule plus courte pour ce type de calcul?

MerKi!!!

14 réponses

  1. Utilisateur anonyme
     
    Salut,

    tu as une petite erreur dans la formule.
    recopie celle-ci et dis moi si elle fonctionne :
    =SI(B22<301;B22*3;SI(ET(B22>301;B22<1920);B22*2;SI(ET(B22>1921;B22<3360);B22/2)))
    0
    1. Utilisateur anonyme
       
      complément :
      dans ta formule, certaines valeurs ne sont pas prises (301, 1920 et 1921).
      je ne sais pas si c'est normal ou pas. mais si elles doivent être prises en compte, penses à utiliser des signes "<=" ou ">=" au lieu des simples "<" et ">". à utiliser judicieusement selon ce que tu souhaites faire!
      0
    2. EXCELLENT
       
      Oui, je souhaiterai que ces valeurs soient prises en comptent pour faire un cumul de l'ensemble. Je vais suivre ton conseil! Merci :)
      0
  2. EXCELLENT
     
    Merci pour ta réponse, je vais essayer de suite :)
    0
  3. EXCELLENT
     
    Yessssss ca marche !!!! Merci beaucoup, seul petit Bémol, le résultat voulu n'est pas le bon, mais je vais peaufiner ca !! Merci encore

    Au fait où était l'erreur?? :s
    0
  4. Utilisateur anonyme
     
    en fermant la parenthèse du 2ème SI, ça faisait que le premier SI avait 4 arguments! et ça Excel il n'aime pas parce que ce n'est pas possible! d'où le message d'erreur.
    ce n'était pas que la fonction était trop longue mais qu'elle avait trop d'arguments.

    autre complément :
    tu n'as pas mis le dernier argument pour le 3ème SI. ça ne pose pas de problème en soit, mais cela dépend de ce que tu veux qu'Excel te fasse. à toi de voir!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. EXCELLENT
     
    Bouhhhh quelle étourderie... Merci pour ton aide! Post Résolu :)
    0
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Salut le forum

      Si tu es sous EXCEL 2003 et pense atteindre la limite des 7 SI imbriquées
      =B22*INDEX({3;2;0,5;#N/A};EQUIV(B22;{0;301;1921;3361};1))

      Mytå
      0
    2. EXCELLENT
       
      Euuuuuhhh Je ne comprends pas trop ta formule mais je vais essayer..:)
      0
    3. EXCELLENT
       
      Effectivement, j'obtiens le même résultat, cependant comme je l'ai cité plus haut, le résultat n'est pas celui que je j'attendais car il ne cumul pas les précédents arguments mais thibouhh a bien éclairer mes lanternes, merci quand même, surtout que je ne connaissais pas ce type d'arguments sous excel (Index, EQUIV)
      0
    4. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Re le forum

      Pour 301 tu veux avoir 300 * 3 + 1 * 2 soit 902 c'est bien cela

      A te relire
      Mytå
      0
    5. EXCELLENT
       
      Re... pour simplifier, un exemple sera parfait :
      j'ai une cellule (B22) qui contient un total : 2200 et je souhaite qu'excel calcul de cette façon ce résultat : si B22 est compris entre 0 et 300, multiplie ce résultat par 3 + sil le résultat est compris entre 301 et 1920 multiplie ce résultat par 2. ce que je souhaite avoir comme résultat final sous forme algébrique 300*3 +1920*2 = 4740
      soit une valeur dans la cellule B25 => 4740
      0
  7. Utilisateur anonyme
     
    ah ça arrive des fois, personne n'est parfait!
    de rien ^^
    ciao ;-)
    0
  8. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    Salut le forum

    Une alternative si le nombre de conditions risque d'être élevés
    =B22*INDEX({3;2;0,5;#N/A};EQUIV(B22;{0;301;1921;3361};1))

    Mytå
    0
  9. EXCELLENT
     
    Effectivement, j'obtiens le même résultat, cependant comme je l'ai cité plus haut, le résultat n'est pas celui que je j'attendais car il ne cumul pas les précédents arguments mais thibouhh a bien éclairer mes lanternes avec les arguments("<=" ou ">=") , merci quand même, surtout que je ne connaissais pas ce type d'arguments sous excel (Index, EQUIV)
    0
  10. Utilisateur anonyme
     
    avec ton exemple, 2200 est aussi compris entre 1920 et 3360, donc le résultat devrait être =300*3+1920*2+3360*0.5=6420
    ou as-tu oublié de préciser quelque chose?!

    je tente quand même une solution :
    =SI(ET(B22>=0;B22<=300);300*3;SI(ET(B22>=301;B22<=1920);300*3+1920*2;SI(ET(B22>=1921;B22<=3360);300*3+1920*2+3360*0,5)))
    0
  11. EXCELLENT
     
    OUi, l'exemple utilisé a été diminué volontairement car je ne voulais pas embrouiller les esprits, mais la dernière formule que tu as posté correspond exactement au résultat voulu ! Chapeau bas ! :)

    Merci bcp
    0
  12. Utilisateur anonyme
     
    tout est ok alors?
    si c'est OK, on peut passer la discussion en résolu?
    0
  13. EXCELLENT
     
    Oui biensur, mais la discussion est déjà en résolu
    0
  14. EXCELLENT
     
    Euh bizarre, je l'avais mis en résolu...Et ce n'est plus proposé en haut du post...
    0
  15. Utilisateur anonyme
     
    je l'avais changé en non résolue comme tu avais encore une question.
    t'inquiète je vais la passer en résolue.
    bonne soirée ;-)
    0