Syntaxe
La fonction SI s’écrit de la façon suivante :
=SI( test_logique ; résultat_si_vrai ; résultat_si_faux )
Les arguments de la fonction sont :
test_logique
– un test logique qui doit obligatoirement renvoyer la valeurVRAI
ouFAUX
(ou 0 ou 1).résultat_si_vrai
– la valeur à afficher si le test renvoie la valeurVRAI
. Il peut s’agir d’un nombre, d’un texte, d’une date, d’une formule imbriquée.résultat_si_faux
– la valeur à afficher si le test renvoie la valeurFAUX
. Il peut s’agir d’un nombre, d’un texte, d’une date, d’une formule imbriquée.
La fonction SI permet de tester une condition ou un ensemble de conditions grâce à la fonction ET Excel et à la fonction OU. Si le résultat global est VRAI
, Excel affichera la valeur indiquée dans le 2nd argument (ou effectuera le calcul si une formule y est indiquée). Si le résultat global est FAUX
, c’est le 3e argument qui sera affiché (ou le calcul indiqué qui sera effectué).
=SI( A1>= 10 ; "ok" ; "")
A1=12
--> Le résultat de la fonction SI sera "ok"
A1=8
--> Le résultat de la fonction SI sera ""
(la cellule sera vide)
Comment utiliser la fonction SI dans Excel ?
Les tests logiques
Pour définir les conditions dans le test logique de la fonction SI, il faut utiliser des opérateurs logiques. Ils permettent d’exprimer des égalités ou des inégalités que vous souhaitez vérifier. Excel ne permet malheureusement pas d’utiliser des caractères génériques pour exprimer des conditions plus complexes.
Le tableau ci-dessous vous donne un résumé de ces différents éléments en fonction du type de donnée dans vos cellules.
Type | Syntaxe | Signification |
---|---|---|
Texte | “Production” | la valeur est égale à Production |
“<>Production” | la valeur est différente de Production | |
Date | “>”&DATE(2022;1;1) | Supérieur au 01/01/2022 |
“>=”&DATE(2022;1;1) | Supérieur ou égal au 01/01/2022 | |
“<”&DATE(2022;1;1) | Inférieur au 01/01/2022 | |
“<=”&DATE(2022;1;1) | Inférieur ou égal au 01/01/2022 | |
DATE(2022;1;1) | Date exacte | |
Nombres | “>”&2000 | Supérieur à 2000 |
“>=”&2000 | Supérieur ou égal à 2000 | |
“<”&2000 | Inférieur à 2000 | |
“<=”&2000 | Inférieur ou égal à 2000 | |
2000 | Montant exact | |
Autres conditions | “=” | Cellule vide (pas de formule ni de valeur nulle) |
“” | Valeur nulle (peut être le résultat d’une formule) | |
“<>” | Cellule non vide (inclus zéro) |
Dans ces exemples, les valeurs sont saisies dans les formules indiquées. Vous avez également la possibilité d’indiquer les valeurs dans une autre cellule et d’appeler la cellule directement dans votre formule Excel. Dans ce cas, vous devrez utiliser votre opérateur logique entre guillemets et le lier à la cellule grâce au caractère &
.
=SI( A1&">=Test" ; résultat_si_vrai ; résultat_si_faux)
Exemples de l’utilisation de la fonction SI.CONDITIONS
Si cellule contient un texte
Pour savoir si un cellule contient un texte spécifique, il faut indiquer le texte entre guillemets. Par exemple, si nous cherchons le mot “Production” dans nos cellules, il faudra indiquer la formule suivante :
=SI(C3="Production";"ok";"pas ok")
--> si C3 contient "Production" le résultat sera "ok"
--> si C3 ne contient pas "Production" le résultat sera "pas ok"
=SI(C3=A1;"ok";"pas ok")
--> A1 contient la valeur "Production"
Si cellule contient un mot ou une partie du texte
De temps en temps, nous voulons vérifier si une cellule contient un mot ou une partie d’un texte. Par exemple, si nous avons un inventaire de matériel de bureau, nous pouvons souhaiter identifier les cellules contenant le mot “table” dans la plage de données. Pour cela, il faudra utiliser :
Contrairement à d’autres fonctions (fonction NB.SI par exemple), la fonction SI ne supporte pas les caractères génériques. C’est pour ça qu’il faut passer par d’autres fonctions.
La fonction CHERCHE va indiquer à quelle position se trouve une chaine de caractère dans un texte. Elle va renvoyer une valeur numérique. La fonction ESTNUM va renvoyer le résultat VRAI si le résultat est numérique.
En combinant la fonction CHERCHE et la fonction ESTNUM, on vérifie que la chaine de caractère est bien présente.
=SI(ESTNUM(CHERCHE("Prod";C3));"ok";"pas ok")
--> si C3 contient "Prod" le résultat sera "ok"
--> si C3 ne contient pas "Prod" le résultat sera "pas ok"
=SI(ESTNUM(CHERCHE(A1;C3));"ok";"pas ok")
--> A1 contient la valeur "Prod"
Si cellule ne contient pas un mot ou une partie du texte
Si vous voulez vérifier qu’une cellule ne contient pas un mot, il faut va falloir utiliser la solution vue précédemment à savoir : la fonction CHERCHE, la fonction ESTNUM. Il faudra également la fonction NON. Cette dernière permet d’inverser le résultat. le résultat VRAI sera transformé en FAUX et inversement. Voici la formule :
--- Avec un texte précis ---
=SI(C3<>"Production";"ok";"pas ok")
--> si C3 n'est pas égal "Production" le résultat sera "ok"
--> si C3 égal "Production" le résultat sera "pas ok"
--- Pour vérifier si la cellule ---
--- ne contient pas un mot ---
--- ou une partie du texte ---
=SI(NON(ESTNUM(CHERCHE("Prod";C3)));"ok";"pas ok")
--> si C3 ne contient pas "Prod" le résultat sera "ok"
--> si C3 contient "Prod" le résultat sera "pas ok"
=SI(NON(ESTNUM(CHERCHE(A1;C3)));"ok";"pas ok")
--> A1 contient la valeur "Prod"
À noter que nous aurions pu obtenir le même résultat en inversant le second et le troisième argument et en remplaçant l’opérateur logique d’inégalité par celui d’égalité.
Il en va de même si on cherche une partie du texte. On aurait pu se passer de l’utilisation de la fonction NON en inversant le second et le troisième argument.
=SI(C3<>"Production";"ok";"pas ok")
=SI(C3="Production";"pas ok";"ok")
--> Les 2 formules sont équivalentes
Si cellule commence par
Il existe plusieurs solutions pour vérifier qu’une cellule commence par un terme précis. La solution suivante utilise la fonction SI. Pour fonctionner il faudra la coupler avec, a minima, la fonction GAUCHE.
En effet, il n’est pas possible de demander si la cellule commence par un terme précis. On va devoir demander à Excel si les x caractères situés à gauche sont égaux à la chaine de caractère cherchée.
=SI(GAUCHE(C3;4)="Prod";"ok";"pas ok")
--> Si C3 commence par "Prod", le résultat sera "ok"
--> Si C3 ne commence pas par "Prod", le résultat sera "pas ok"
Si cellule ne commence pas par
Pour vérifier si une cellule ne commence pas par une chaine de caractères précise avec la fonction SI, nous allons utiliser une formule combinant l’opérateur logique “<>”, la fonction GAUCHE et la fonction SI.
=SI(GAUCHE(C3;4)<>"Prod";"ok";"pas ok")
--> Si C3 ne commence pas par "Production", le résultat sera "ok"
--> Si C3 commence par "Production", le résultat sera "pas ok"
Si cellule se termine par
Pour valider qu’une cellule se termine par un mot ou une partie du texte, nous allons utiliser la fonction SI et la fonction DROITE. Il’astérix. L’astérix sera placé juste devant le mot désiré de la façon suivante :
=SI(DROITE(C3;4)="Prod";"ok";"pas ok")
--> Si C3 se termine par "Prod", le résultat sera "ok"
--> Si C3 ne se termine pas par "Prod", le résultat sera "pas ok"
Si cellule ne se termine pas par
Si nous voulons vérifier qu’une cellule ne se termine pas par un mot ou un texte, nous allons nous servir de la fonction SI, de la fonction DROITE et de l’opérateur logique symbolisant l’inégalité.
=SI(DROITE(C3;4)<>"Prod";"ok";"pas ok")
--> Si C3 ne se termine pas par "Prod", le résultat sera "ok"
--> Si C3 se termine par "Prod", le résultat sera "pas ok"
Si cellule contient un nombre précis de caractères
De temps en temps, il se peut que vous vouliez qu’une cellule contienne un nombre précis de caractères. Nous allons nous servir de la fonction NBCAR. Elle permet de compter le nombre de caractères dans la cellule. Si je veux vérifier si ma cellule contient 5 caractères, je vais utiliser la syntaxe suivante :
=SI(NBCAR(C3)=5;"ok";"pas ok")
--> Si C3 contient 5 caractères, le résultat sera "ok"
--> Si C3 ne contient pas 5 caractères, le résultat sera "pas ok"
La fonction SI avec des nombres
Si cellule contient une valeur spécifique
Pour vérifier qu’une cellule contienne une valeur précise, il faut utilliser la syntaxe suivante :
=SI(C3=2000;"ok";"pas ok")
--> Si C3 contient 2000, le résultat sera "ok"
--> Si C3 ne contient pas 2000, le résultat sera "pas ok"
Si cellule contient une valeur supérieure à
Pour vérifier qu’une cellule soit supérieure à une valeur précise, il faut se servir de l’opérateur logique “>
“. Pour indiquer que nous voulons une valeur supérieure ou égale, il faudra coupler l’opérateur avec le symbole égale de la façon suivant “>=
“.
=SI(C3>2000;"ok";"pas ok")
--> Si C3 contient une valeur supérieure à 2000,
le résultat sera "ok"
--> Si C3 ne contient pas une valeur supérieure à 2000,
le résultat sera "pas ok"
=SI(C3>=2000;"ok";"pas ok")
--> Si C3 contient une valeur supérieure ou égale à 2000,
le résultat sera "ok"
--> Si C3 ne contient pas une valeur supérieure ou égale à 2000,
le résultat sera "pas ok"
Si cellule contient une valeur inférieure à
Pour vérifier qu’une cellule contienne une valeur inférieure à une autre valeur ou une valeur inférieure ou égale, il faudra se servir des opérateurs logiques “<
” et “<=
“.
=SI(C3<2000;"ok";"pas ok")
--> Si C3 contient une valeur inférieure à 2000,
le résultat sera "ok"
--> Si C3 ne contient pas une valeur inférieure à 2000,
le résultat sera "pas ok"
=SI(C3<=2000;"ok";"pas ok")
--> Si C3 contient une valeur inférieure ou égale à 2000,
le résultat sera "ok"
--> Si C3 ne contient pas une valeur inférieure ou égale à 2000,
le résultat sera "pas ok"
Si cellule contient une valeur différente de
Pour vérifier qu’une cellule ne contienne pas d’une valeur précise, il faudra se servir du symbole d’inégalité dans votre formule.
=SI(C3<>2000;"ok";"pas ok")
--> Si C3 contient une valeur différente de 2000,
le résultat sera "ok"
--> Si C3 ne contient pas une valeur différente de 2000,
le résultat sera "pas ok"
Si cellule contient une valeur différente de 0
Pour vérifier qu’une cellule ne contienne pas 0, on peut se servir de l’exemple précédent. Avec le symbole d’inégalité “<>”, on valide qu’une cellule ne contienne pas une valeur choisie.
=SI(C3<>0;"ok";"pas ok")
--> Si C3 contient une valeur différente de 0,
le résultat sera "ok"
--> Si C3 ne contient pas une valeur différente de 0,
le résultat sera "pas ok"
La fonction SI avec des dates
Si cellule contient une date spécifique
Pour vérifier qu’une cellule contienne une date précise avec la fonction SI, il faut utiliser la syntaxe suivante :
=SI(C3="01/01/2023";"ok";"pas ok")
=SI(C3=DATE(2023;1;1);"ok";"pas ok")
--> si C3 contient la date 01/01/2023 le résultat sera "ok"
--> si C3 ne contient pas la date 01/01/2023 le résultat sera "pas ok"
=SI(C3=A1;"ok";"pas ok")
--> A1 contient la date 01/012/2023
J’apprécie utiliser la fonction DATE plutôt que d’utiliser la date entre guillemets. Je crains toujours qu’Excel confonde le format américain (MM/JJ/AAAA) avec notre format habituel (JJ/MM/AAAA).
Si cellule contient date supérieure à
Pour vérifier qu’une cellule contienne une date supérieure ou même supérieure ou égale à une autre date, on va se servir du symbole supérieur “>” et supérieur ou égal “>=”.
=SI(C3>"01/01/2023";"ok";"pas ok")
=SI(C3>DATE(2023;1;1);"ok";"pas ok")
--> si C3 est supérieure à la date 01/01/2023 le résultat sera "ok"
--> si C3 n'est pas supérieure à la date 01/01/2023 le résultat sera "pas ok"
=SI(C3>="01/01/2023";"ok";"pas ok")
=SI(C3>=DATE(2023;1;1);"ok";"pas ok")
--> si C3 est supérieure ou égale à
la date 01/01/2023 le résultat sera "ok"
--> si C3 n'est pas supérieure ou égale à
la date 01/01/2023 le résultat sera "pas ok"
=SI(C3>A1;"ok";"pas ok")
=SI(C3>=A1;"ok";"pas ok")
--> A1 contient la date 01/012/2023
Si cellule contient date inférieure à
Pour contrôler si une cellule contient une date inférieure à une date référence, il faut se servir de l’opérateur logique “<“. Si on veut une date inférieure ou égale, il faudra utiliser l’opérateur “<=”.
=SI(C3<"01/01/2023";"ok";"pas ok")
=SI(C3<DATE(2023;1;1);"ok";"pas ok")
--> si C3 est inférieure à la date 01/01/2023 le résultat sera "ok"
--> si C3 n'est pas inférieure à la date 01/01/2023 le résultat sera "pas ok"
=SI(C3<="01/01/2023";"ok";"pas ok")
=SI(C3<=DATE(2023;1;1);"ok";"pas ok")
--> si C3 est inférieure ou égale à
la date 01/01/2023 le résultat sera "ok"
--> si C3 n'est pas inférieure ou égale à
la date 01/01/2023 le résultat sera "pas ok"
=SI(C3<A1;"ok";"pas ok")
=SI(C3<A1;"ok";"pas ok")
--> A1 contient la date 01/012/2023
Si cellule contient date comprise entre
Pour vérifier qu’une cellule contient une date comprise entre deux dates, il va falloir se servir de la fonction SI ainsi que de la fonction ET. En effet, il va falloir vérifier deux conditions :
- que la cellule ait une valeur supérieure à la date la plus basse ;
- que la cellule ait une valeur inférieure à la date la plus haute.
La fonction ET va permettre de cumuler les deux tests logiques de la façon suivante :
=ET(C3>"01/01/2023";C3<"31/12/2023")
=ET(C3>DATE(2023;1;1);C3<DATE(2023;12;31))
On devance ici l’analyse de la fonction SI avec plusieurs conditions. Voici la syntaxe avec la fonction SI :
=SI( =ET(C3>"01/01/2023";C3<"31/12/2023") ;"ok";"pas ok")
=SI( ET(C3>DATE(2023;1;1);C3<DATE(2023;12;31)) ;"ok";"pas ok")
--> si C3 est compris entre le 01/01/2023
et le 31/12/2023 alors
le résultat sera "ok"
--> si C3 n'est pas compris entre le 01/01/2023
et le 31/12/2023 alors
le résultat sera "pas ok"
Si cellule contient une date différente de
Pour vérifier qu’une cellule contienne une date différente d’une date spécifique, il faut se servir de l’opérateur logique symbolisant la différence “<>
” de la façon suivante :
=SI(C3<>"01/01/2023";"ok";"pas ok")
=SI(C3<>DATE(2023;1;1);"ok";"pas ok")
--> si C3 ne contient pas la date 01/01/2023 le résultat sera "ok"
--> si C3 contient la date 01/01/2023 le résultat sera "pas ok"
=SI(C3<>A1;"ok";"pas ok")
--> A1 contient la date 01/012/2023
La fonction SI avec des cellules vides
Si cellule est vide
Il existe deux notions totalement différentes dans la tête d’Excel. Les cellules vides et les valeurs nulles. Une cellule vide est une cellule qui ne contient rien. Une valeur nulle est une cellule qui contient une formule ou une valeur dont le résultat est nul. Visuellement, les deux éléments sont très proches puisque sans cliquer sur la cellule, on ne peut pas faire la distinction.
Pour vérifier si une cellule est vide, il faudra utiliser la fonction ESTVIDE. Cette fonction, comme son nom l’indique, retourne le résultat VRAI si la cellule est vide et FAUX dans le cas contraire.
=SI(ESTVIDE(C3);"ok";"pas ok")
--> si C3 est vide, le résultat sera "ok"
--> si C3 n'est pas vide, le résultat sera "pas ok"
Pour vérifier si une cellule a une résultat nul, il faut utiliser le double guillemets “”. Il indique une valeur nulle.
=SI(C3="";"ok";"pas ok")
--> si C3 est nul, le résultat sera "ok"
--> si C3 n'est pas nul, le résultat sera "pas ok"
Si cellule n’est pas vide
Toujours dans l’optique de différencier les cas où l’on parle de cellules réellement vides des cellules contenant une formule ou une valeur renvoyant un résultat nul, voici les deux solutions.
Pour vérifier qu’une cellule n’est pas vide, on peut utiliser la fonction ESTVIDE ainsi que la fonction NON. La fonction ESTVIDE va vérifier si la cellule ne contient rien. La fonction NON va inverser le résultat. Personnellement, je n’apprécie pas cette solution. Je préfère inverser le second et le troisième argument. On arrive au même résultat.
=SI(NON(ESTVIDE(C3));"ok";"pas ok")
=SI(ESTVIDE(C3));"pas ok";"ok")
--> si C3 est vide, le résultat sera "ok"
--> si C3 n'est pas vide, le résultat sera "pas ok"
Pour vérifier qu’une cellule renvoie un résultat nul, on va utiliser la syntaxe du double guillement associé à l’opérateur logique d’inégalité de la façon suivante :
=SI(C3<>"";"ok";"pas ok")
--> si C3 est nul, le résultat sera "ok"
--> si C3 n'est pas nul, le résultat sera "pas ok"
Comment utiliser la fonction SI avec plusieurs conditions ?
Il est possible d’indiquer plusieurs conditions avec la fonction SI. Pour cela, il existe plusieurs solutions possibles.
- Avec les fonctions ET et OU ;
- Avec des SI imbriqués ;
- Avec la fonction SI.CONDITIONS.
Avec les fonctions ET et OU
La fonction ET et la fonction OU permettent de cumuler des tests logiques et d’afficher VRAI ou FAUX en fonction des résultats des tests.
- La fonction ET affichera le résultat VRAI si tous les test se révèlent vrais.
- La fonction OU affichera le résultat VRAI si au moins un test renvoie la valeur VRAI.
Dans l’exemple ci-dessous, nous avons un listing d’étudiants pour lesquels nous voulons vérifier qui valide son semestre. Les conditions pour valider son semestre sont :
- La moyenne doit être d’au moins 12 –
cellule>=12
- Toutes les matières doivent avoir des notes strictement supérieures à 8 –
ET(plage_de_cellules>8)
Pour lier tous les élèments, nous allons nous servir une seconde fois de la fonction ET. La syntaxe de la formule sera la suivante.
=SI( ET( F3>=12 ; ET(C3:E3>8) ) ; "ok" ; "" )

Cet exemple est très intéressant car il a permis de mettre en oeuvre des formules imbriquées ainsi qu’une formule matricielle.
Avec des SI imbriqués
La fonction SI permet de saisir des formules Excel en tant que résultat (résultat si VRAI ou résultat si FAUX). Nous pouvons saisir n’importe quelle fonction. Il est alors intéressant d’imbriquer les fonctions SI les unes dans les autres.
Si nous reprenons l’exemple des élèves, nous allons pouvoir vérifier ceux qui ont obtenu leur semestre en vérifiant dans un premier temps ceux qui ont eu une moyenne générale supérieure à 12.
=SI( moyenne_générale >= 12 ; SI(...) ; "" )
Puis vérifier qu’ils ont eu une note strictement supérieure à 8 dans chaque matière
=SI( ET(C3:E3>8) ; "ok" ; "" )
La syntaxe globale sera :
=SI( F3>=12 ; SI( ET(C3:E3>8) ; "ok" ; "" ) ; "" )

La fonction SI.CONDITIONS
La fonction SI.CONDITIONS peut être une solution pour faire des fonctions SI avec plusieurs critères. Cependant, cette solution est bien moins souple. Elle est intéressante dans des cas relativement limités. Je vous invite à visiter l’article dédié à la fonction SI.CONDITIONS pour vous faire une idée de son intérêt.