«

»

Fonction SI

Faire une fonction SI c'est avant tout faire un test comme nous l'avons vu dans l'article sur les tests logiques. 

Nous avions vu qu'en écrivant un test dans une cellule le test retourne VRAI ou FAUX. Mais laisser VRAI ou FAUX dans les cellules ce n'est vraiment pas "professionnel". C'est là où la fonction SI qui va nous permettre de personnaliser le résultat d'un test.

Présentation de la fonction SI

La fonction SI se décompose en trois parties

  • Le test (vu précédemment dans cet article)
  • Ce que vous voulez afficher quand le test est VRAI
  • Ce que vous voulez afficher quand le test est FAUX
=SI(TEST; Si test est VRAI;Si test est FAUX)

Mais attention, la fonction SI seule ne résout pas tous cas de conditions

Si vous devez construire une formule qui va vous retourner plus de 2 résultats, il faut passer par ce que l'on appelle des SI imbriqués.

Ou sinon, si vous devez retourner des données comprises entre des tranches de valeurs (comme le calcul des mentions à un examen), c'est la fonction RECHERCHEV en valeur approchante qu'il faut utiliser.

Exemple 1 : La gestion de stock


Dans l'article sur les tests nous avions réalisé un test sur les produits qui n'avaient pas été vendus au cours du mois.

=F2=0

Le résultat du test nous retourne VRAI ou FAUX. Maintenant nous souhaitons modifier cet affichage pour le rendre plus lisible et compréhensible.

Quand le test est VRAI, on veut afficher le message "Pas de vente" (avec les guillemets car c'est du texte).

Quand le test est FAUX (c'est-à-dire quand des ventes ont été réalisées) nous souhaitons laisser la cellule vide.

La formule va s'écrire de la façon suivante

=SI(F2=0;"Pas de vente";"")

fonction_si_1

Si vous omettez le paramètre FAUX dans l'écriture de votre fonction SI, Excel écrira le terme FAUX dans la cellule (vraiment pas bon 😱😱😱)

Exemple 2 : Les heures supplémentaires


Dans cet exemple la partie VRAI de la fonction SI ne va pas retourner un texte. Ici nous allons retourner le résultat d'un calcul.

En fait, que ce soit dans la partie VRAI ou FAUX de la fonction SI, il est possible d'afficher

  • Du texte (écrit par vous-même)
  • Un résultat vide (traduit par "" dans Excel)
  • Le résultat d'un calcul ou d'une autre formule

Le test

Dans cet exemple, nous allons bâtir notre test sur la cellule qui contient le temps légal de travail journalier (la cellule G3 dans notre exemple).

Comme tous nos tests vont pointer sur cette cellule, il est indispensable de verrouiller les références de cette cellule avec des $.

Nous allons donc faire un test qui va comparer si la durée réellement travaillée (en colonne D) est plus grande avec la durée légale contenue en cellule G3.

=D2>$G$3

Le calcul quand le test est VRAI

Si la valeur de la cellule D2 est supérieure à G3, l'employé a travaillé plus que la durée légale et donc nous devons déterminer le temps supplémentaire travaillé.

Dans un tel cas de figure nous effectuons tout simplement la différence entre le temps travaillé et la durée légale du travail.

=SI(D2>$G$3;D2-$G$3

L'écriture finale de la fonction SI

Si l'employé a travaillé moins que la durée légale, nous n'affichons rien dans la cellule (soit "") car cela ne va pas générer de frais salariaux supplémentaires.

La formule complète s'écrit alors :

=SI(D2>$G$3;D2-$G$3;"")

fonction_si_2

Exercez-vous dans l'exemple suivant (la première formule est déjà construite pour vous aider)

 

Exemple 3 : Remplir les blancs

Dans un document Excel, il est fortement déconseillé de laisser des cellules vides pour éviter de fausser vos calculs par la suite. Mais si votre classeur comporte beaucoup de cellules vides, plutôt que de recopier les valeurs une à une manuellement, nous pouvons utiliser une nouvelle fois la fonction SI pour remplir les cellules vides.

Par exemple, dans le document ci-dessous, la colonne B qui contient le nom des produits a beaucoup de cellules vides que nous souhaitons remplir simplement.

Dans une nouvelle colonne, nous allons pour la première cellule, récupérer la valeur en B2 (en I2 nous écrivons =B2).

Ensuite, le test que nous allons faire est très simple. Nous allons juste évaluer si le contenu de la cellule B3 est vide (B3=""). Si le test est VRAI (c'est-à-dire la cellule est vide), nous allons récupérer la valeur au-dessus (soit I2). Si le test est FAUX (c'est-à-dire la cellule est non vide), nous allons récupérer la valeur contenue en colonne B. L'écriture de la formule est la suivante :

=SI(B3="";I2;B3)

De nouveau, vous pouvez voir le résultat de la formule en direct dans la feuille de calcul suivante (double-cliquer sur la cellule pour voir la formule et recopier la formule).

Il ne reste plus qu'à faire une opération de copier-collage spécial en valeur pour remplacer le contenu de la colonne B par les données que nous venons de calculer en colonne I.

Articles complémentaires


Voici une liste d'articles qui pourrait également vous intéresser sur le même thème.

Lien Permanent pour cet article : https://www.excel-exercice.com/fonction-si/


(178 commentaires)

Passer au formulaire de commentaire

  1. HOUD

    BONJOUR
    JE FAIS UNE FORMULE DU GENRE POUR UN LIEN VERS UNE FACTURATION SI C4=1 ALORS NOM DE L ADHERENT durand
    SI C4 UNE 2 NOM DE L ADERENT 2 dupond ...
    LE PB C EST QUE J AI UNE SOIXANTAINE D ADHERENTS A FAIRE Y A TIL UN MOYEN POUR NE PAS COPIER 60 FOIS LA FORMULE
    EN FAISANT UNE LISTE QQ PART PAR EX MERCI

    1. Frédéric LE GUEN

      Et avec une fonction RECHERCHEV, ça ne résoud pas le problème ?

  2. haddou

    Bonjour

    Voila, je voudrais savoir comment faire pour avoir le nombre de jours en 2017, sachant que j'ai des dates qui débutent en 2016 et termine en 2016, d'autres qui débutent en 2016 et termine en 2017 donc dans ce cas on doit prendre uniquement du 01/01/2017 et la date de fin de 2017 (exemple si c'est 05/12/2016 et termine le 10/01/2017, cela fais 9 jours en 2017 parce que on prend pas en compte le dernier jours de départ c'est à dire le 10).
    Aussi si la date du début est le 10/01/2017 et la fin le 10/01/2017 cela fais un jours en 2017 mais si c'est le 10/01/2017 et la fin le 11/01/2017 cela fais aussi 1 jours.
    Aussi si j'ai des dates qui débutent en 2017 et termine en 2018 moi je veux uniquement les jours de 2017 c'est à dire c'est le 25/12/2017 et termine le 05/01/2018, le nombre de jours est 7 jours en 2017.
    tout cela doit contenir dans une formule.

    Je sais cela est un peu difficile merci de votre aide en avance

  3. Kone Ismael

    Grand merci pour tout

  4. makhlouf

    merci monsieur frédéric de cette site qui ma donnez la solution de plusieurs problèmes en excel et je suis un enseignent dans un centre de formation en algerie

  5. Vauché

    Bonjour
    Mon problème j'ai un tableau avec 3 colonnes dans la dernière je dois mettre -70€ mes deux autres colonnes des chiffres comme 20€ ou 30€ et ainsi de suite, j'aimerai que le résultat de mes -70€ dans ce cas soit -20€ mais je ne connais pas la formule.
    Pourriez-vous m'aider s'il vous plaît
    Merci

  6. Vandeck

    Bonjour,

    Je souhaiterais trouver la formule qui me permettrait de prendre en compte le temps de repas minimal pour calculer le temps de travail effectif dans une journée.
    Sur un tableau, j'inscrit mon horaire d'arrivée le matin, celui de départ le midi, de retour le midi et dans une cellule, il doit être inscrit mon heure de départ. Sauf que mon temps de repas est d'au moins 45 minutes. Donc, la différence entre mon heure de retour du midi et mon heure de départ du midi ne peut jamais être inférieure à 45 minutes.
    Comment intégrer cette notion de valeur minimum dans la formule ?

    Par avance, je vous remercie de votre aide.

  7. cardoso

    Bonjour,

    je cherche une formule qui consiste à dire que une cellule supérieur à 0 est égal à 1.
    Merci pour votre retour.

    Ps: j'ai essayé la fonction =si mais je suis pas sûre que je sois dans la bonne fonction

    1. Rabah

      la fonction est : =si(A1>0;1;0)
      et copier la formule sur toute la colonne
      Exemple:
      A1 = -1 si(A1>0;1;0) résultat : 0
      A2 = 0 si(A2>0;1;0) résultat : 0
      A3 = 1 si(A3>0;1;0) résultat : 1
      A4 = 2 si(A4>0;1;0) résultat : 1
      ........

  8. Dominique

    Bonjour à vous

    comment dois-je faire pour faire le total des montants qui se trouvent dans la colonne "F" par rapport au nom du fournisseur qui se trouve dans la colonne "A"
    Dans la colonne, j'ai 25 fournisseurs.
    Dans la colonne F, j'ai +/- 500 montants de facture.

    Dans une 2ème feuille, je voudrais avoir le total des montants par fournisseur.

    Merci pour votre aide

  9. Marine

    Bonjour,
    J'ai un fichier où je note à la suite les RDV pris par des conseillers.
    J'aimerai que de ce tableau général découle 1 tableau par conseiller.
    J'ai dans la colonne B le nom du conseiller, comment faire pour : si B4=Mr X alors on copie le contenu des autres cases dans le tableau se trouvant dans l'onglet du conseiller ?

    Merci pour votre aide.

  10. BALSE

    Bonjour,
    merci pour ce tuto,
    j'ai un problème avec deux si imbriqués
    voici ma formule : =SI(A4="GROUILLER";30;SI(A4="BERTRAND";2;))
    Dans un tableau, je voudrais mettre la valeur 30 si c'est une personne, si c'est une autre mettre 2 et sinon mettre aucune valeur donc un blanc.
    En l'état actuel des choses la formule fonctionne bien, sauf qu'au lieu d'un blanc j'ai la valeur 0.
    Si je mets cette formule là : =SI(A4="GROUILLER";30;"";SI(A4="BERTRAND";2;"";)) elle est refusée nombre trop important d'argument.

    Pourriez vous m'aider s'il vous plaît?
    Cordialement.
    Didier

    1. Frédéric LE GUEN

      Le dernier ; après les guillemets n'a rien à faire là. Vous l'enlevez et ça marche

    2. Rabah

      =SI(A4="GROUILLER";30;SI(A4="BERTRAND";2;"")
      est la formule exacte

  11. laurence

    BONSOIR,
    pouvez-vous m'aider pour un tableau,
    dans la colonne A j'indique 20 qui sera égal à moins 2 heures ou 40 égal moins 3 heures
    colonne B heure arrivée
    colonne C heure départ
    colonne C amplitude horaire (C-B)
    et colonne D retirer de la colonne C le nbre d'heures selon A 20 ou 40
    j'essaye avec la formule suivante ça ne fonctionne pas
    =D-si(A=20;-2:00;si(A=40;-3:00;))

    Merci pour votre aide
    cordialement
    Laurence

  12. Eric21

    Bonjour,

    Existe-t-il un moyen de prendre en compte la casse dans la fonction "SI". Je m'explique,

    - si ma cellule X contient le texte "As", je souhaite afficher la valeur "1" dans ma cellule Y
    - si ma cellule X contient le texte "AS", je souhaite afficher la valeur "2" dans ma cellule Y

    J'ai utilisé la formule de base "SI" en essayant des variantes pour respecter la casse mais sans résultat jusqu'ici...

    formule utilisée :

    =SI(A1="As";1;SI(A1="AS";2;""))

    Merci d'avance !!!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *