DOUBLE CONDITION

Résolu
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

2 réponses

Résumé de la discussion

La discussion porte sur la création d'une formule Excel qui modifie O4 selon deux conditions: L4 doit être du texte et I4 doit correspondre à des termes d'une liste. Plusieurs propositions visent à vérifier l'appartenance d'I4 à des plages LISTES!$B$3:$B$6 ou similaires et à appliquer un arrondi dans Excel avec ARRONDI.SUP pour obtenir +10 ou +50. La meilleure approche proposée combine ESTTEXTE(L4), des tests OU sur des sous-ensembles de LISTES!$B$2:$B$9 et des arrondis successifs, afin de couvrir les deux scénarios de chiffre. En guise de solution consolidée, la formule validée vérifie L4, teste les groupes de valeurs et applique ARRONDI.SUP(O4+10;-1) ou ARRONDI.SUP(O4+50;-2) selon la plage rencontrée et précisée.

Bobot (l’IA à votre service)
  1. Modérateur
    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
    1. 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
    2. 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
    3. Pour l'arrondi : =ARRONDI.SUP(O4+5;-1)
      0
    4. Super ça! Merci Fahora!
      0
    5. Modérateur
      @WDSEMGVisiblement, 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
  2. 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
    1. 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
    2. 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
    3. 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
    4. Modérateur
      =SI(GAUCHE(LISTES!$B$x;2)="P/". valeur si vrai ; valeur si faux) ?
      0
    5. 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