[Résolu] Condition avec référence à cellules avec + ou -

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur: Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.

[Résolu] Condition avec référence à cellules avec + ou -

Messagepar SmPNRM » 19 Oct 2020 14:10

Bonjour à tous,

J'ai fait un petit script sous Excel pour obtenir selon la valeur d'un paramètre une qualification de son état (avec une échelle par paramètre), comme suit :

Code : Tout sélectionner   AgrandirRéduire
=SI(U2="O2 dissous"
;SI(R2>=8;"Tres bon"
;SI(ET(R2>=8;R2<6);"Bon"
;SI(ET(R2>=6;R2<4);"Moyen"
;SI(ET(R2>=4;R2<3);"Mediocre"
;"Mauvais"))))
;SI(U2="SATUR.O2"
;SI(R2>=90;"Tres bon"
;SI(ET(R2>=70;R2<90);"Bon"
;SI(ET(R2>=50;R2<70);"Moyen"
;SI(ET(R2>=30;R2<50);"Mediocre"
;"Mauvais"))))
;SI(U2="DBO5"
;SI(R2<=3;"Tres bon"
;SI(ET(R2>3;R2<=6);"Bon"
;SI(ET(R2>6;R2<=10);"Moyen"
;SI(ET(R2>10;R2<=25);"Mediocre"
;"Mauvais"))))
;SI(U2="C Orga"
;SI(R2<=5;"Tres bon"
;SI(ET(R2>5;R2<=7);"Bon"
;SI(ET(R2>7;R2<=10);"Moyen"
;SI(ET(R2>10;R2<=15);"Mediocre"
;"Mauvais"))))
;SI(U2="Temp. Eau"
;SI(R2<=20;"Tres bon"
;SI(ET(R2>20;R2<=21,5);"Bon"
;SI(ET(R2>21,5;R2<=25);"Moyen"
;SI(ET(R2>25;R2<=28);"Mediocre"
;"Mauvais"))))
;SI(U2="Orthophosp"
;SI(R2<=0,1;"Tres bon"
;SI(ET(R2>0,1;R2<=0,5);"Bon"
;SI(ET(R2>0,5;R2<=1);"Moyen"
;SI(ET(R2>1;R2<=2);"Mediocre"
;"Mauvais"))))
;SI(U2="P total"
;SI(R2<=0,05;"Tres bon"
;SI(ET(R2>0,05;R2<=0,2);"Bon"
;SI(ET(R2>0,2;R2<=0,5);"Moyen"
;SI(ET(R2>0,5;R2<=1);"Mediocre"
;"Mauvais"))))
;SI(U2="NH4+"
;SI(R2<=0,1;"Tres bon"
;SI(ET(R2>0,1 ;R2<=0,5;"Bon"
;SI(ET(R2>0,5;R2<=2);"Moyen"
;SI(ET(R2>2;R2<=5);"Mediocre"
;"Mauvais"))))
;SI(U2="pH"
;SI(ET(R2>=6,5;R2<=8,2);"Tres bon"
;SI(OU(ET(R2>=6;R2<6,5);ET(R2>8,2;R2<=9));"Bon"
;SI(OU(ET(R2>=5,5;R2<6);ET(R2>9;R2<=9,5));"Moyen"
;SI(OU(ET(R2>=4,5;R2<5,5);ET(R2>9,5;R2<=10));"Mediocre"
;"Mauvais"))))))))))))


Or si le script ci-dessus fonctionne parfaitement, il ne fonctionne plus dès que je rajoute les lignes suivantes (j'obtiens une Err:501 pour la première ligne et une Err:508 pour les suivantes).

Code : Tout sélectionner   AgrandirRéduire
=SI(U2="NH4+"
;SI(R2<=0,1;"Tres bon"
;SI(ET(R2>0,1 ;R2<=0,5;"Bon"
;SI(ET(R2>0,5;R2<=2);"Moyen"
;SI(ET(R2>2;R2<=5);"Mediocre"
;"Mauvais"))))
;SI(U2="NO2-"
;SI(R2<=0,1;"Tres bon"
;SI(ET(R2>0,1 ;R2<=0,3;"Bon"
;SI(ET(R2>0,3;R2<=0,5);"Moyen"
;SI(ET(R2>0,5;R2<=1);"Mediocre"
;"Mauvais"))))
;SI(U2="NO3-"
;SI(R2<=10;"Tres bon"
;SI(ET(R2>10 ;R2<=50;"Bon"
;"Moyen")))))))


J'ai pu remarquer que le problème venait de conditions lorsque je fait référence à un résultat attendu contenant + ou - (NH4+, NO2-, NO3-).
J'ai testé de mettre les cellules de la colonne U en format Texte, puis de convertir la colonne en format Texte via "Texte en colonnes", mais le résultat est le même.
Ne tenant pas à modifier ma base de données, auriez-vous une idée afin de faire fonctionner le script, en faisant référence à ces cellules dont le contenu est NH4+, NO2- et NO3- ?
En vous remerciant d'avance de vos propositions !

A bientôt,
Dernière édition par SmPNRM le 19 Oct 2020 15:29, édité 1 fois.
LibreOffice 6.4 sur Windows 10
SmPNRM
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 15 Sep 2020 13:05

Re: [Calc] Condition avec référence à cellules contenant + o

Messagepar DLE » 19 Oct 2020 15:07

Bonjour,
Il manque des ")" dans les "ET"
SI(ET(R2>0,1 ;R2<=0,5);"Bon"
.
.
SI(ET(R2>0,1 ;R2<=0,3);"Bon"
.
.
SI(ET(R2>10 ;R2<=50);"Bon"

En fin de ligne il reste six ")"
Cdlt.
AOO 4.1.8 et Libreoffice 6.2.8.2 sous Windows 10 64 bits, FireFox, Thunderbird, ORB 1.2.1-MacOS Big Sur 11.1, OpenJDK 11.0.9.1
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
 
Message(s) : 1319
Inscrit le : 30 Déc 2007 19:56
Localisation : Lille

Re: [Calc] Condition avec référence à cellules contenant + o

Messagepar SmPNRM » 19 Oct 2020 15:25

J'ai fait un petit script sous Excel


N'importe quoi...
Je suis désolé pour cette phrase automatique, je travaille bien sous LibreOffice et il s'agit d'une formule.

Ce n'était donc pas une question de + ou de - mais de parenthèses (merci DLE !)

Voici la formule complète qui fonctionne :

Code : Tout sélectionner   AgrandirRéduire
=SI(U2="O2 dissous"
;SI(R2>=8;"Tres bon"
;SI(ET(R2>=8;R2<6);"Bon"
;SI(ET(R2>=6;R2<4);"Moyen"
;SI(ET(R2>=4;R2<3);"Mediocre"
;"Mauvais"))))
;SI(U2="SATUR.O2"
;SI(R2>=90;"Tres bon"
;SI(ET(R2>=70;R2<90);"Bon"
;SI(ET(R2>=50;R2<70);"Moyen"
;SI(ET(R2>=30;R2<50);"Mediocre"
;"Mauvais"))))
;SI(U2="DBO5"
;SI(R2<=3;"Tres bon"
;SI(ET(R2>3;R2<=6);"Bon"
;SI(ET(R2>6;R2<=10);"Moyen"
;SI(ET(R2>10;R2<=25);"Mediocre"
;"Mauvais"))))
;SI(U2="C Orga"
;SI(R2<=5;"Tres bon"
;SI(ET(R2>5;R2<=7);"Bon"
;SI(ET(R2>7;R2<=10);"Moyen"
;SI(ET(R2>10;R2<=15);"Mediocre"
;"Mauvais"))))
;SI(U2="Temp. eau"
;SI(R2<=20;"Tres bon"
;SI(ET(R2>20;R2<=21,5);"Bon"
;SI(ET(R2>21,5;R2<=25);"Moyen"
;SI(ET(R2>25;R2<=28);"Mediocre"
;"Mauvais"))))
;SI(U2="Orthophosp"
;SI(R2<=0,1;"Tres bon"
;SI(ET(R2>0,1;R2<=0,5);"Bon"
;SI(ET(R2>0,5;R2<=1);"Moyen"
;SI(ET(R2>1;R2<=2);"Mediocre"
;"Mauvais"))))
;SI(U2="P total"
;SI(R2<=0,05;"Tres bon"
;SI(ET(R2>0,05;R2<=0,2);"Bon"
;SI(ET(R2>0,2;R2<=0,5);"Moyen"
;SI(ET(R2>0,5;R2<=1);"Mediocre"
;"Mauvais"))))
;SI(U2="NH4+"
;SI(R2<=0,1;"Tres bon"
;SI(ET(R2>0,1;R2<=0,5);"Bon"
;SI(ET(R2>0,5;R2<=2);"Moyen"
;SI(ET(R2>2;R2<=5);"Mediocre"
;"Mauvais"))))
;SI(U2="NO2-"
;SI(R2<=0,1;"Tres bon"
;SI(ET(R2>0,1;R2<=0,3);"Bon"
;SI(ET(R2>0,3;R2<=0,5);"Moyen"
;SI(ET(R2>0,5;R2<=1);"Mediocre"
;"Mauvais"))))
;SI(U2="NO3-"
;SI(R2<=10;"Tres bon"
;SI(ET(R2>10;R2<=50);"Bon"
;"Moyen"))
;SI(U2="pH"
;SI(ET(R2>=6,5;R2<=8,2);"Tres bon"
;SI(OU(ET(R2>=6;R2<6,5);ET(R2>8,2;R2<=9));"Bon"
;SI(OU(ET(R2>=5,5;R2<6);ET(R2>9;R2<=9,5));"Moyen"
;SI(OU(ET(R2>=4,5;R2<5,5);ET(R2>9,5;R2<=10));"Mediocre"
;"Mauvais"))))
)))))))))))


Merci beaucoup et à bientôt !
LibreOffice 6.4 sur Windows 10
SmPNRM
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 15 Sep 2020 13:05

Re: [Résolu] Condition avec référence à cellules avec + ou -

Messagepar Jeff » 19 Oct 2020 17:30

Bonjour,

SmPNRM a écrit:Voici la formule complète qui fonctionne
Chapeau bas, car c’est totalement imbuvable :mrgreen:

Y’aurait plusieurs variantes, à base de RECHERCHEV ou de CHOISIR, mais dans l’éventualité de rester dans une imbrication de fonction SI, tu n’as besoin que de 4 fonctions SI :

Code : Tout sélectionner   AgrandirRéduire
=SI(premier_test;"Très bon";SI(second_test;"Bon";SI(troisième_test;"Moyen";SI(quatrième_test;"Médiocre";"Mauvais"))))


De ce que j’ai compris de ta formule, le premier test comprends les éléments suivants :

ET(U2="O2 dissous";R2>=8)
ou ET(U2="SATUR.O2";R2>=90)
ou ET(U2="DBO5";R2<=3)
ou ET(U2="C Orga";R2<=5)
ou ET(U2="Temp. eau";R2<=20)
ou ET(U2="Orthophosp";R2<=0,1)
ou ET(U2="P total";R2<=0,05)
ou ET(U2="NH4+";R2<=0,1)
ou ET(U2="NO2-";R2<=0,1)
ou ET(U2="NO3-";R2<=10)
ou ET(U2="pH";R2>=6,5;R2<=8,2)

ce qui donne pour ce premier test :
Code : Tout sélectionner   AgrandirRéduire
=OU(ET(U2="O2 dissous";R2>=8);ET(U2="SATUR.O2";R2>=90);ET(U2="DBO5";R2<=3);ET(U2="C Orga";R2<=5);ET(U2="Temp. eau";R2<=20);ET(U2="Orthophosp";R2<=0,1);ET(U2="P total";R2<=0,05);ET(U2="NH4+";R2<=0,1);ET(U2="NO2-";R2<=0,1);ET(U2="NO3-";R2<=10);ET(U2="pH";R2>=6,5;R2<=8,2)) 


À intégrer donc sous la forme :
Code : Tout sélectionner   AgrandirRéduire
=SI(OU(ET(U2="O2 dissous";R2>=8);ET(U2="SATUR.O2";R2>=90);ET(U2="DBO5";R2<=3);ET(U2="C Orga";R2<=5);ET(U2="Temp. eau";R2<=20);ET(U2="Orthophosp";R2<=0,1);ET(U2="P total";R2<=0,05);ET(U2="NH4+";R2<=0,1);ET(U2="NO2-";R2<=0,1);ET(U2="NO3-";R2<=10);ET(U2="pH";R2>=6,5;R2<=8,2));"Très bon";SI(second_test;"Bon";SI(troisième_test;"Moyen";SI(quatrième_test;"Médiocre";"Mauvais"))))


Je te laisse faire les tests n°2 à 4 :wink:

A +
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.8 sur Emmabuntus Debian Edition 3 Buster 32 bits, sur Ubuntu 20.04 x64 (Focal Fossa), et sur Win 10 pro x64
Jeff
GourOOu
GourOOu
 
Message(s) : 8388
Inscrit le : 18 Sep 2006 10:40
Localisation : France


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 23 invité(s)