Bon, du coup il y a moyen de partir là-dessus pour répondre à la problématique.
=SI(OU(D2="";D2<0);"";SI(D2=0;"Anomalie transfert";"Anom2"))
Pour revenir à ta proposition : oui, bien sûr ta fonction est fonctionnelle, aucun souci là-dessus, mais :
=SI(ET(D2=0;NB.VIDE(D2)=0);"Anomalie Type 1";SI(D2>0;"Anomalie Type 2";SI(D2<0;" ";" ")))
=SI(ET(D2=0;NB.VIDE(D2)=0)
La fonction NB.VIDE teste le nombre de cellules vides sur une plage. Ici, une plage de 1 cellule. Et tu lui demandes si à la fois D2 est égale à 0, et si D2 n'est pas vide.
Mais si D2 est égale à 0, elle n'est forcément pas vide, puisque 0 est différent de vide.
SI(D2<0;" ";" ")
Si tu te retrouves à devoir mettre la même valeur pour valeur si vrai et valeur si faux, c'est à priori qu'un truc a été loupé à un moment en amont.
Par ailleurs, tu lui demandes de mettre un espace. En tant qu'humain, on ne verra pas la différence entre un espace et du vide mais pour Excel, tout comme 0 n'est pas vide, un espace ne correspond pas à une cellule vide et dans certains contextes cela va te poser des soucis.
Préfère lui dire : =si(D2<0;"";...
Ce qui amène à trouver la solution pour remplacer le =NB.VIDE(D2)=1.
Tu lui dirais : =Si(D2="";...
Et avec cette approche plus "logique", les choses viennent vraiment naturellement pour les fonctions SI.
@+