Trop d'arguments dans formule

Bonjour,

Je souhaite calculer une cotisation en fonction du salaire déclaré d'un adhérent.
J'ai entré cette formule (le salaire est dans la cellule E10) :
=SI(ET(E10<1311,21;E10*0,75%);SI(E10>=1311,21;E10<1433,17;E10*0,76%);SI(E10>=1433,17;E10<1555,13;E10*0,77%);SI(E10>=1555,13;E10<1677,09;E10*0,78%);SI(E10>=1677,09;E10<1799,05;E10*0,79%);SI(E10>=1799,05;E10<1921,01;E10*0,80%);SI(E10>=1921,01;E10<2042,97;E10*0,82%);SI(E10>=2042,97;E10<=2164,78;E10*0,85%);SI(E10>2164,78;E10*0,9%))
Réponse : "vous avez tapé un nombre trop important d'argument pour cette fonction"

Barème des cotisations
Salaire<1311.21 cotisation 0.75%
Salaire >= 1311.21 et Salaire<1433.17 cotisation 0.76%
Salaire>=1433.17 et Salaire<1555.13 cotisation 0.77%
Salaire>=1555.13 et Salaire<1677.09 cotisation 0.78%
Salaire>=1677.09 et Salaire<1799.05 cotisation 0.79%
Salaire>=1799.05 et Salaire<1921.01 cotisation 0.80%
Salaire>= 1921.01 et Salaire<2042.97 cotisation 0.82%
Salaire>=2042.97 et Salaire<=2164.78 cotisation 0.85%
Salaire>2164.78 cotisation 0.9%

3 réponses

  1. Contributeur
    ton post #6 ->

    Pour 100 tranches on oublie la formule avec 99 SI ; on opte pour un tableau de correspondance et la fonction RECHERCHEV ...
    0
    1. Contributeur
      ton post #4 ->

      Non, non, je ne suis pas un chef, loin de là !
      Mais le problème que tu nous as soumis est extrêmement fréquent, et a d'ailleurs fait l'objet de nombreuses discussions dans ce forum.
      C'est moi qui t'ai répondu le premier, parce que je bénéficie du décalage horaire et que mes petits camarades en Europe dorment déjà, alors que je n'ai pas encore soupé ...
      Mais ils sont des douzaines à pouvoir te donner la même solution que moi !

      En tout cas imprègne-toi bien de la logique du raisonnement, ainsi que de la bonne utilisation des fonctions ET, NON, OU combinées avec SI :
      https://www.cjoint.com/c/FCbaXIw8DJO
      https://www.cjoint.com/c/FCbaWEvMsTO

      Cordialement.
      0
      1. Contributeur
        Normal : tu n'as pas respecté la syntaxe de la fonction SI ...
        0
        1. Merci de m'indiquer la bonne syntaxe (je galère grave)
          0
        2. Contributeur
          Il faut supprimer ce ET qui n'a rien à faire en début de formule.
          Par contre il devrait apparaitre dans toutes les autres occurrences de SI, avec la logique que tu as adoptée !

          La formule correcte est
          =E10* SI(E10<1311,21;0,75%; SI(E10<1433,17;0,76%; SI(E10<1555,13;0,77%; SI(E10<1677,09;0,78%; SI(E10<1799,05;0,79%; SI(E10<1921,01;0,80%; SI(E10<2042,97;0,82%; SI(E10<2164,78;0,85%; 0,9%))))))))
          0
        3. @Raymond PENTIERMerci beaucoup cela fonctionne (vous êtes un chef)
          0
        4. Contributeur
          En effet, puisqu'on a déjà testé le cas
          SI(E10<1311,21;
          il est superflu de refaire ce test en écrivant
          SI(ET(E10>=1311,21;E10<1433,17;
          ce qui est redondant ...
          Et il suffit de multiplier le salaire (E10) par la cotisation (le résultat des tests), au lieu de calculer les 9 cotisations possibles dans la formule !
          0
        5. Si en revanche je veux appliquer un barème du type :
          salaire mensuel compris entre 991 et 1006 cotisation 7.47
          salaire mensuel compris entre 1006 et 1021 cotisation 7.62
          etc etc etc (100 tranches)
          Salaire supérieur à 2164 cotisation 0.9%

          Quelle sera la formule ?
          0