Excel fonction si et

Résolu
Bonjour,

Je souhaites faire un affichage sur mon tableau excel mais je ne trouve pas comment faire pouvez vous m'aider svp? merci.

Alors J'aimerais que :
- si A1 est compris entre 0 et 1000 cela m'affiche 10%
- si A1 est compris entre 1001 et 2000 cela m'affiche 20%
- si A1 est compris entre 2001 et 3000 cela m'affiche 30%
- si A1 est compris entre 3001 et 4000 cela m'affiche 40%
- si A1 est compris entre 4001 et 5000 cela m'affiche 50%
- si A1 est supérieur à 5000 cela m'affiche 60%

J'ai essayé un truc dans le genre :

=SI(ET(C2>0;C2<1000);"10%";SI(ET(C2>1000;C2<2000);"20%";SI(ET(C2>2000;C2<3000);"30%";SI(ET(C2>3000;C2<4000);"40%";SI(ET(C2>4000;C2<5000);"50%")))))))

Mais cela ne fonctionne pas je dois faire une erreur quelque part.

Merci d'avance pour votre aide.

Bonne journée.

8 réponses

  1. Contributeur
    Bonjour.

    Oui, il y a des erreurs dans :
    =SI(ET(C2>0;C2<1000);"10%";SI(ET(C2>1000;C2<2000);"20%";SI(ET(C2>2000;C2<3000);"30%";
    SI(ET(C2>3000;C2<4000);"40%";SI(ET(C2>4000;C2<5000);"50%")))))))

    - La première est d'avoir mis 7 parenthèses à la fin alors qu'il n'y a que 5 fois la fonction SI.
    Mais normalement Excel t'a affiché un message d'erreur et proposé la bonne écriture !

    - La deuxième est qu'après "50%" il manque le texte à afficher si C2>5000, soit "60%" ...

    - Il y en a peut-être une troisième, parce que tes affichages actuels sont des textes, puisque placés entre guillemets ; s'ils doivent servir à des calculs, comme c'est très vraisemblable, il faut supprimer ces guillemets.

    Ta formule devient finalement :
    =SI(ET(C2>0;C2<1000);10%;SI(ET(C2>1000;C2<2000);20%;SI(ET(C2>2000;C2<3000);30%;SI(ET(C2>3000;C2<4000);40%;SI(ET(C2>4000;C2<5000);50% ;60% )))))
    0
    1. Contributeur
      vladicom, Bonsoir.

      Notre collègue Raymond (Salut de Brésil) a déjà répondu exactement à ce que vous vouliez.

      Mais je pense qu'il existe des moyens plus efficaces que celui que vous essayez d'utiliser.

      Ci-joint des suggestions de solutions avec RECHERCHE, RECHERCHEV et SI + ET.

      https://www.cjoint.com/c/HCsbYJ0nx6A

      J'espère avoir aidé avec quelque chose.
      --
      Belo Horizonte, MG - Brasil.
      Marcílio Lobão
      0
      1. Contributeur
        (suite ...)
        Tu as aussi commis une erreur de logique, qui conduit à une formule trop compliquée ...

        En effet tu testes si C2>1000 alors que tu viens de tester que C2<1000 était faux !
        =SI(ET(C2>0;C2<1000);"10%";SI(ET(C2>1000;C2<2000);"20%";

        De plus ta formule n'examine pas le cas où C2=1000 !

        Tu aurais donc dû écrire =SI(C2<0;"-";SI(C2<1001;"10%";SI(C2<2001;"20%";...

        La formule complète, plus élégante et plus "light", sera la suivante :
        =SI(C2<0;"-";SI(C2<1001;10%;SI(C2<2001;20%;SI(C2<3001;30%;SI(C2<4001;40%;
        SI(C2<5001;50%;60%))))))


        0
        1. Wow merci pour vos réponses tout ça est parfait.

          Merci encore.
          0
          1. Contributeur
            (edit #7...)
            Et si tu veux gérer en plus le cas où C2 ne contient pas un nombre positif (mais un nombre négatif, un texte ou rien), il faut opter pour
            =SI(OU(C2<0;ESTVIDE(C2);ESTTEXTE(C2));"#"; SI(C2=0;0,1; SI(C2>5000;0,6;
            ARRONDI.SUP(C2/1000;0)/10)))

            https://www.cjoint.com/c/HCsrHP5LU2m

            0
            1. Contributeur
              Bonjour
              A partir de 3 ou4 SI en cascade, il vaut mieux passer sur d'autres formules.
              essaie
              =(A1>0)*EQUIV(A1;{1;1001;2001;3001;4001;5001};1)*0,1
              mettre la cellule au format-nombre -pourcentage-0 décimale

              0
              1. Contributeur
                Bonjour Michel_m

                Il ne faudrait pas mettre un contrôle pour le cas d'une cellule vide afin d'éviter le #N/A
                modifier comme ceci :

                =SI(A1>0;(A1>0)*EQUIV(A1;{1;1001;2001;3001;4001;5001};1)*0,1;"")

                votre méthode m'a plu donc je l'ai copier pour la comprendre et j'ai eu "#N/A" comme résultat d'où ma question ?
                0
                1. Contributeur
                  Bonjour

                  effectivement mais alors,on pourrait écrire
                  =(A1>=1)*(EQUIV(A1;{1;1001;2001;3001;4001;5001};1)*0,1)
                  si A1 est vide ou inférieur à 1, le résultat donne 0

                  si c'est l'utilisation de EQUIV et/ou de la multiplication que tu ne piges pas, fais signe

                  0
                  1. Contributeur
                    Bonjour Michel_m
                    Non c'est bon
                    C'est " =(A1>0)* " qui ne chagrinait car je ne comprenais pas le fonctionnement, ça bloquait
                    Maintenant c'est bon et je vois que le Si est inutile
                    Merci pour l'aide
                    0