Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Combinaisons et conditions dans une formule

  • Initiateur de la discussion Initiateur de la discussion sum01
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sum01

XLDnaute Occasionnel
Bonjour à tous,
Dans le fichier ci-joint, je fais face à une difficulté pour effectuer un test. Dans la colonne XX, j'ai des familles de données (symbolisées par des couleurs). Pour chaque famille, je recherche à savoir :
i) s'il existe au moins 1 cas "YES" dans le champ XZ et 1 cas "Doc" dans le champ xz1 (sur la même ligne). Si c'est le cas alors, la formule renvoie "OK+" pour tous les éléments de la même famille.
ii) si dans xz j'ai "NO" et dans xz1= vide pour tous les éléments de la même famille alors "NoOK"
iii) si dans xz j'ai "NO" et dans xz1 = Doc dans au moins un des champs de la même alors "NoOK"
iv) si dans xz j'ai "YES" et dans xz1 = Doc dans au moins un des champs (pas sur la même ligne) alors "OK-"
v) si dans xz j'ai "YES" et dans xz1 = vide dans au moins un des champs (pas sur la même ligne) alors "OK-"

Quelles sont les pistes pour combiner toutes ces hypothèses ?
Un grand merci pour votre aide et dores et déjà je vous souhaite un très bon week-end
 

Pièces jointes

Bonjour,

Autre solution:
Formule en E2 à valider avec CTRL + SHIFT + ENTREE, puis à tirer vers le bas:
VB:
=SIERREUR(SI(EQUIV(1;($A$2:$A$31=$A2)*($C$2:$C$31="YES")*($D$2:$D$31="Doc");0)>0;"OK+";"");"")&SIERREUR(SI(ET(NB.SI.ENS($A$2:$A$31;$A2;$C$2:$C$31;"YES")>0;EQUIV(1;($A$2:$A$31=$A2)*($C$2:$C$31="NO")*($D$2:$D$31="Doc");0));"OK-";"");"")&SIERREUR(SI(NB.SI.ENS($A$2:$A$31;$A2;$C$2:$C$31;"YES")=0;"NoOK";"");"")

Cdlt
 

Pièces jointes

Bonjour JHA, Bonjour Rouge,
Merci pour vos réponses la solution de Rouge correspond à mon besoin et merci beaucoup pour cela. Dans la mesure où je souhaiterais rajouter une nouvelle condition :
vi) si dans xz j'ai un "YES" pour une même famille et dans xz1 = vide dans tous les champs de la même famille alors "OK-", de quelle manière puis-je compléter la formule ?
Un tout grand merci pour votre aide et bon week-end
 

Pièces jointes

Nouvelle formule en E2 à valider avec CTRL + SHIFT + ENTREE, puis à tirer vers le bas:
VB:
=SIERREUR(SI(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$31="YES")*($D$2:$D$41="Doc");0)>0;"OK+";"");"")&SI(NB.SI.ENS($A$2:$A$41;$A2;$C$2:$C$41;"Yes";$D$2:$D$41;"")>0;"OK-";"")&SIERREUR(SI(NB.SI.ENS($A$2:$A$41;$A2;$C$2:$C$41;"YES")=0;"NoOK";"");"")
 

Pièces jointes

ReBonjour Rouge,
Rien à redire, ça marche à la perfection ! C'est une belle et complexe formule et un tout grand merci pour votre support/aide !!
Très bon week-end
 
Bonjour,

Essayez cette formule plus courte et plus simple.
Nouvelle formule en E2 à valider avec CTRL + SHIFT + ENTREE, puis à tirer vers le bas:
VB:
=SIERREUR(SI(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="Yes")*($D$2:$D$41="Doc");0);"OK+";"");SI(ET(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="NO");0);NB.SI.ENS($A$2:$A$41;$A2;$C$2:$C$41;"Yes")>0);"OK-";"NoOK"))

Cdlt
 

Pièces jointes

Bonjour Rouge, cette formule également à merveille et est plus simple effectivement à comprendre. Les deux approches amènent au même résultat. Merci beaucoup pour votre aide et investissement. Je vous souhaite une bonne journée et un bon début de semaine.
 
ReBonjour Rouge, pour comprendre la formule, j'ai essayé de modifier une des conditions (nouveau) pour obtenir OK- qui correspondrait à :
vi) si dans xz j'ai un "NO" pour une même famille et dans xz1 = Doc dans un des champs de la même famille alors "OK-", si suis presque parvenu en modifiant votre formule de cette manière
=SIERREUR(SI(EQUIV(1;($A$2:$A$41=$A2)*($D$2:$D$41="Doc");0);"OK+";"");SI(ET(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="NO");0);NB.SI.ENS($A$2:$A$41;$A2;$C$2:$C$41;"Yes")>0);"OK-";"NoOK")). Mais le résultat de cette formule n'est pas tout à fait correct. A quel moment dans la formule, le calcul doit se faire ?
Encore merci pour votre aide
 

Pièces jointes

Bonjour,

Nouvelle formule avec ajout de la nouvelle condition, toujours à valider avec CTRL + SHIFT + ENTREE:
Code:
=SIERREUR(SI(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="Yes")*($D$2:$D$41="Doc");0);"OK+";"");SI(ET(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="NO");0);NB.SI.ENS($A$2:$A$41;$A2;$C$2:$C$41;"Yes")>0);"OK-";SI(ET(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="NO");0);NB.SI.ENS($A$2:$A2;$A2;$D$2:$D2;"Doc")>0);"OK-";"NoOK")))

ou celle-ci qui fait un "OU" logique entre 2 conditions renvoyant le même résultat:
Code:
=SIERREUR(SI(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="Yes")*($D$2:$D$41="Doc");0);"OK+";"");SI(OU(ET(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="NO");0);NB.SI.ENS($A$2:$A$41;$A2;$C$2:$C$41;"Yes")>0);ET(EQUIV(1;($A$2:$A$41=$A2)*($C$2:$C$41="NO");0);NB.SI.ENS($A$2:$A2;$A2;$D$2:$D2;"Doc")>0));"OK-";"NoOK"))

Le fichier avec les 2 formules

Cdlt
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
50
Réponses
4
Affichages
124
Réponses
20
Affichages
735
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…