DOUBLE CONDITION
Résolu
WDSEMG
Messages postés
21
Statut
Membre
-
WDSEMG Messages postés 21 Statut Membre -
WDSEMG Messages postés 21 Statut Membre -
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
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
2 réponses
-
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 enESTNA(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 queARRONDI.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.-
-
-
-
-
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.
-
-
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 ,-
-
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. -
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...? -
-
-