DOUBLE CONDITION

Résolu
WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
Hello les amis!

Je cherche à modifier un resultat suivant 2 conditions: 1/ si L4 est remplie, 2/ si I4 recoit des termes bien spécifique d'une liste. Voici ma formule...qui ne fonctionne pas:
=SI(ESTTEXTE(L4);SI(I4=LISTES!$B$3:$B$6;O4+10;(O4)))

"LISTES!$B$3:$B$6" est une plage de termes censée valider ma formule. Le resultat doit etre une addition +10 si les deux conditions sont remplies. Je cherche aussi à arrondir le résultat à la dizaine au dessus, avec un minimum de 5 (ex: 228 doit donner 240, et non 230).

J'espère avoir été clair.
Merci d'avance les amis

WDS
A voir également:

2 réponses

Arkana0 Messages postés 6365 Date d'inscription   Statut Modérateur Dernière intervention   182
 
Bonjour,

1) Ton premier SI() n'est pas de "Valeur si faux"

2) Je suppose que la condition sur I4 qui donne une erreur ?
Deux manières de régler ça :
-
OU(I4 = LISTES!$B$3, ... , I4 = LISTES!$B$6)

-
NON(ESTNA(RECHERCHEV(I4;LISTES!$B$3:$B$6;1;FAUX)))
, qui permet de savoir si la valeur d'I4 correspond à la liste de valeurs voulues.
Tu peux simplifier ça en
ESTNA(RECHERCHEV(I4;LISTES!$B$3:$B$6;1;FAUX))
, mais en inversant ce que tu as renseigné en "valeur si vrai" et en "valeur si faux"

3) Pourquoi les parenthèses autour du dernier O4 ?

4) Pour l'arrondi supérieur : est-ce que
ARRONDI.SUP(ARRONDI.AU.MULTIPLE(Nombre;5)+1;-1)
donne un résultat satisfaisant ? A 227 on reste arrondi à 230, mais à 228 ça passe bien à 240, puis à 250 lorsqu'on atteint 238.
0
WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, c'est la condition sur I4 qui ne fonctionne pas. Celle sur O4 marche parfaitement.
Les formules proposées ne fonctionnent pas non plus...

Pour l'arrondi, ex: 225 passe à 230, mais 226 passe à 240 car il faut au moins 5 d'écart. Comment intégrer cet arrondi à la formule précédente?
0
WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai essayé cela, ça ne marche pas non plus:
=SI(ESTTEXTE(L4);O4+10;O4;SI(I4=LISTES!$B$3:$B$6;O4+10;O4))

Je désespère...
0
Fahora Messages postés 814 Date d'inscription   Statut Membre Dernière intervention   68
 
Pour l'arrondi : =ARRONDI.SUP(O4+5;-1)
0
WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Super ça! Merci Fahora!
0
Arkana0 Messages postés 6365 Date d'inscription   Statut Modérateur Dernière intervention   182 > WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Visiblement, il va falloir coder une fonction en vba.

Je propose le code suivant :
Function ArrondiSpecial(Nombre As Integer)

Dim Unite As Integer
Dim Dizaine As Integer
Dim Centaine As Integer

Centaine = Int(Nombre / 100)
Dizaine = Int((Nombre - Centaine * 100) / 10)
Unite = Nombre - Centaine * 100 - Dizaine * 10

Dizaine = Dizaine + 1
If Unite > 5 Then
Dizaine = Dizaine + 1
End If

ArrondiSpecial = Centaine * 100 + Dizaine * 10

End Function

A copier dans "ThisWorkbook" quand tu cliques dans "Visual Basic" dans l'onglet développeur

Ensuite, dans la cellule où tu souhaites avoir l'arrondi, tu tapes
=ArrondiSpecial(Nombre à arrondir)

(Il faut reprendre le nom de la fonction, si tu décides de le changer)

A noter : tel que c'est codé :
- çon peut avoir de mauvais résultats avec des nombres négatifs (il faudrait alors probablement modifier l'incrémentation de "Dizaine" et le test sur "Unite"
- ça ne fonctionnera pas avec des nombres > 999, mais tu devineras aisément comment pouvoir les prendre en compte.
0
Fahora Messages postés 814 Date d'inscription   Statut Membre Dernière intervention   68
 
Je ne comprends pas vraiment ce que tu souhaites faire avec la condition de I4.
Tu souhaites vérifier si le mot qui est écrit dedans appartient à ta liste en B3:B6 , c'est ça ?

cdlt ,
0
WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Maintenant j'ai ça:

=SI(ESTTEXTE(L4);ARRONDI.SUP(O4+10;-1);O4)

En plus, j'aimerai ajouter une condition: si en I4 apparaissent les mots LISTES!$B$3:$B$6, alors mon calcul s'applique. Sinon il reste égal à O4.

M'as tu compris?
0
Fahora Messages postés 814 Date d'inscription   Statut Membre Dernière intervention   68
 
Ah , non je n'avais pas compris ça comme ça. Mais je ne suis pas encore sûr de ce que j'ai compris.

Ta liste de B3:B6 ne comporte que 4 mots, est ce qu'on pourrait avoir une idée de ces 4 mots.

Qu'est ce qu'il y a réellement dans ta colonne I4. Donne nous un exemple précis s'il te plait. Si c'est confidentiel, change simplement les mots, ça pourra nous servir d'exemple.
0
WDSEMG Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Rien de confidentiel:

Agglo
Mdf
CP
Latté
Tulipier
Chêne

Les 4 premiers sont des types de panneaux de bois. J'aimerai que lorsque ces 4 mots sont détectés, la formule s'applique. N'y a t'il pas un moyen de créer un code du style
P/ Agglo
P/ Mdf
...

Ainsi tout ce qui commencerai par P/ serait pris en compte...?
0
Arkana0 Messages postés 6365 Date d'inscription   Statut Modérateur Dernière intervention   182
 
=SI(GAUCHE(LISTES!$B$x;2)="P/". valeur si vrai ; valeur si faux) ?
0
Fahora Messages postés 814 Date d'inscription   Statut Membre Dernière intervention   68
 
Donc il faut que TOUS les mots Agglo , Mdf , CP , Latté , Tulipier , Chêne , apparaissent dans la cellule I4 , pour valider la condition, c'est bien ça ?
0