Comment créer une formule SI avec ET et OU à plusieurs conditions ?

Résolu
Apprentie_excel Messages postés 17 Statut Membre -  
Apprentie_excel Messages postés 17 Statut Membre -
Bonjour,

Je souhaite automatiser un résultat hors après plusieurs tentatives de SI ET et SI OU, je m'y perds. Je pense que je ne dois pas partir du bon raisonnement.
Pourriez-vous m'aider à automatiser la colonne résultat et m'expliquer votre raisonnement ?

13 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    compte tenu que A contient des textes, essayez avec:

    =SI(ET(NB.SI(A2;"*104*");B2<>"");0;1)

    attention aux signes
    crdlmnt
    0
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    compte tenu que A contient des textes, voyez avec:

    =SI(ET(NB.SI(A2;"*104*");B2<>"");1;0)

    attention aux signes
    (voyez où placer le 0 et le 1, car vos modèles au 1° message renvoie 0 dans tous les cas)
    crdlmnt
    0
  3. Apprentie_excel Messages postés 17 Statut Membre 1
     
    Déjà merci pour vos réponses. Effectivement, je n'avais pas du tout pensé à utiliser le "NB.SI".
    J'ai préparé les formules selon le contenu de la colonne A et B par contre je ne sais pas les imbriquées les valeurs vraix et faux sont identiques : 0;1

    =SI(ET(NB.SI(A2;"*104*");B2<>"");0;1)

    =SI(ET(NB.SI(A2;"");B2<>"");0;1)

    =SI(ET(NB.SI(A2;"*100*");B2="");0;1)

    =SI(ET(NB.SI(A2;"*101*");B2="");0;1)

    =SI(ET(NB.SI(A2;"*102*");B2="");0;1)

    =SI(ET(NB.SI(A2;"*103*");B2="");0;1)

    =SI(ET(NB.SI(A2;"*105*");B2="");0;1)

    =SI(ET(NB.SI(A2;"*107*");B2="");0;1)

    =SI(ET(NB.SI(A2;"*108*");B2="");0;1)
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Si tous vos cas sont là, vous pouvez peut être faire plus simple avec une formule qui va prendre en compte l'ensemble des valeurs en entête de A:

    =SI(ET(B2<>"";ESTNUM(GAUCHE(A2;3)*1));1;0)

    si ça ne convient pas revenez avec tous vos cas de figure

    crdlmnt
    0
  6. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Si tous vos cas sont là et que vous voulez 1 dès que A commence par trois chiffres, il y a plus simple:

    =SI(ESTNUM(GAUCHE(A2;3)*1);B2<>"");1;0)

    mais on n'en voit pas l'utilité si tous vos A sont dans ce cas.
    Par contre on peut affiner si la valeur des trois chiffres de A doit être compris entre deux limites
    revenez si besoin avec plus d'info
    crdlmnt
    0
  7. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Si tous vos cas sont comme votre image et que vous souhaitez 1 quand le début de A est formé de trois chiffres, on peut faire plus simple avec:

    =SI(ET(B2<>"";ESTNUM(GAUCHE(A2;3)*1);1;0)

    on peut aussi si besoin tenir cette valeur de A entre des limites définies pour renvoyer 1

    Si ça ne convient pas revenez avec plus d'nfo

    crdlmnt

    0
  8. Apprentie_excel Messages postés 17 Statut Membre 1
     
    Effectivement, on peut jouer sur les chiffres (très bonne approche :) )
    Cependant, j'ai mon type "104" est égale au type"vide".
    =SI(ET(NB.SI(A2;"*104*");B2<>"");0;1)
    =SI(ET(NB.SI(A2;"");B2<>"");0;1)

    Du coup, j'ai une exception dans les types comportant un chiffre.

    Les autres types "100;101;102;103;105;106;107;108" sont identiques.

    0
    1. Apprentie_excel Messages postés 17 Statut Membre 1
       
      Si on ne trouve pas de formule, peut-être qu'il serait possible de faire avec une RECHERCHEV en créant un tableau des résultats souhaités ?
      0
  9. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Pas trop compris. Vous voulez le même résultat si A contient 104 ou si A est vide?
    si c'est cela:

    =SI(ET(OU(A2="";NB.SI(A2;"*104*"));B2<>"");1;0)
    ou pour toutes les valeurs
    =SI(ET(B2<>"";OU(A2="";ESTNUM(GAUCHE(A2;3)*1));1;0)

    mais cette formule va renvoyer 1 aussi quand A et B sont vides

    peut être faut il compléter avec

    =SI(ET(A2="";B2="");0;SI(ET(B2<>"";OU(A2="";ESTNUM(GAUCHE(A2;3)*1)));1;0))

    (Mais dans les deux cas, je ne sais pas si il faut écrire....);0;1) ou ......;1;0) en fin de formule, faute d'infos)

    et si ça ne convient pas, faites un modèle avec tous les cas de figure de A et B et les valeurs que vous voulez obtenir et déposez le ici: https://www.cjoint.com/

    crdlmnt
    0
  10. Apprentie_excel Messages postés 17 Statut Membre 1
     
    Tout d'abord, encore merci de prendre du temps.
    Je vous joins le fichier avec tous les cas
    https://www.cjoint.com/c/KKwiCXodZAO

    A = "" ou ="104" effectivement c'est même résultat attendu
    Mais il y'aussi SI A="100" ou"102" etc... le résultat attendu est l'inverse de A="" "104".
    0
  11. Apprentie_excel Messages postés 17 Statut Membre 1
     
    .Bonjour,
    Merci de prendre le temps de trouver la formule.
    Je vous joins le lien pour le fichier avec tous les cas possible :

    https://www.cjoint.com/c/KKwiCXodZAO

    En synthèse si A contient "" ou "104 c'est le même résultat
    si A contient 100 ou 101 ou 102 ou 103 ou 105 ou 107 ou 108 c'est le même résultat.
    0
  12. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    je vous retournes ce fichier avec en colonne D une solution qui me semble coonvenir à votre tableau d'information, mais par contre, je trouve incompatible les lignes que j'ai passées en rouge avec la condition que j'ai passé en rouge qui semble contradictoire
    revenez si besoin
    https://www.cjoint.com/c/KKwk3gOE2PK
    0
  13. Apprentie_excel Messages postés 17 Statut Membre 1
     
    Je confirme à force de réecrire, je me contredis Voici les éléments
    Si A est égal à 100 ou 101 ou 102 ou 103 ou 105 ou 107 ou 108 et si B est <> vide : valeur vraie 1 - valeur fausse 0

    J'ai mis à jour la formule :
    =SI(ET(A2="";B2="");1;SI(ET(A2="";B2<>"");0;SI(ET(NB.SI(A2;"*104*");B2="");1;SI(ET(NB.SI(A2;"*104*");B2<>"");0;SI(ET(ESTNUM(GAUCHE(A2;3)*1);B2="");0;1)))))

    ça fonctionne ????
    0