Compter cellules différentes non vides avec condition
Bonjour à la communauté d'Excel-Pratique,
Malgré un bon nombre de sujet ressemblant au mien je ne suis pas parvenu résoudre mon problème.
Je précise que je cherche une solution sans VBA, uniquement avec des formules excel pour des raisons de compatibilités et de sécurité.
Dans le fichier joint j'ai:
- en colonne A mes hosts pouvant contenir des cellules vides.
- en colonne B mes plateformes pouvant contenir BareMetal, MultiTenant, VM ou une cellule vide.
j'ai limité l'exemple à 15 lignes et j'ai coloré les lignes des deux colonnes en fonction des Host pour plus de visibilité.
Je souhaite par une mise en forme conditionnelle passer en rouge les cellules de la collone plateforme (lorsque pour chaque ligne, la les cellules des colonnes A et B sont remplies):
1) si j'ai plusieurs BareMetal dans le même host (résultat attendu: toutes les plateformes de cet host deviennent rouge)
OU
2) si j'ai des plateformes différentes dans le même host (résultat attendu: toutes les plateformes de cet host deviennent rouge)
On pourra traiter la mise en forme conditionnelle globale dans un second temps, traitons d'abord chaque condition (condition 1) en colonne C, condition 2) en colonne D).
1) pour cette condition, j'ai trouvé la solution sur le forum, j'ai appliqué la mis een forme conditionnelle sur la plage C2:C15 pour l'exemple :
=SI(ET(($B2<>"");SOMMEPROD(($A$2:$A$15=$A2)*($B$2:$B$15="BareMetal"))>1);1;0)
2) pour celle-ci, je souhaite donc passer en rouge les cellules Plateform d'un Host donné lorsque le calcul du nombre de cellules Plateform différentes et non vides de cet Host est supérieur à 1. On va donc dire que je cherche la formule X>1. J'ai représenté en colonne D la valeur de X attendue et en rouge le comportement attendu de la mise en forme conditionnelle.
J'ai fait différents tests de formules sur les colonnes E à H qui n'ont pas donné grand chose...
J'en appelle donc à vous pour m'éclairer.
Merci d'avance pour votre aide.
Bonjour,
Condition 1 :
=SI(ET(A2<>"";B2<>"");SOMMEPROD((A$2:$A$15=A2)*($B$2:$B$15="BareMetal"));"")Condition 2 :
=SI(ET(A2<>"";B2<>"");(SOMMEPROD(($A$2:$A$15=A2)*($B$2:$B$15="BareMetal"))>0)+(SOMMEPROD(($A$2:$A$15=A2)*($B$2:$B$15="VM"))>0)+(SOMMEPROD(($A$2:$A$15=A2)*($B$2:$B$15="MultiTenant"))>0);"")MFC :
=ET(C2<>"";C2>1)S'applique à : =$C$2:$D$15
Cordialement.
Merci infiniment, il semble que celà fonctionne!
Mon besoin exact était de tout regrouper dans une seule MFC en faisant un OU sur les deux conditions pour ensuite supprimer les colonne C et D qui étaient des colonnes de travail pour trouver la formule.
ça me donne donc comme MFC sur la plage B2:B15
=SI(ET(A2<>"";B2<>"");SI(OU((SOMMEPROD(($A$2:$A$15=A2)*($B$2:$B$15="BareMetal"))>0)+(SOMMEPROD(($A$2:$A$15=A2)*($B$2:$B$15="VM"))>0)+(SOMMEPROD(($A$2:$A$15=A2)*($B$2:$B$15="MultiTenant"))>0)>1;(SOMMEPROD((A$2:$A$15=A2)*($B$2:$B$15="BareMetal")))>1);1;0);0)S'il existe une solution plus générique je suis preneur (dans le cas où je décide d'ajouter de nouvelles valeurs différentes de BareMetal, MultiTenant et VM)
Re,
Une MFC peut être comparée à une formule utilisant SI, dont la syntaxe : =SI(Condition;ValeurSiVrai;ValeurSiFaux) deviendrait : =SI(Condition;AppliquerMiseEnFormeSiVrai;NePasAppliquerMiseEnFormeSiFaux)
Les Appliquer... ou NePasAppliquer... sont l'affaire d'Excel, et la formule se limite alors à : =Condition, formule qui renvoie Vrai ou Faux, à partir de quoi Excel applique ou non la MFC...
On ne doit donc pas trouver de SI dans une formule MFC...
Si tu combines les 2 formules en une unique condition permettant l'application de ta MFC, très bien, mais note qu'il arrive qu'Excel ne parvienne plus à assimiler les formules trop complexes en MFC et n'applique plus rien alors que la formule (reportée sur feuille) renvoie bien le résultat. C'est un des cas (je l'ai eu 2 ou 3 fois) où je bascule sur une fonction personnalisée (VBA) utilisable en feuille de calcul, renvoyant VRAI ou FAUX de façon à être utilisée en MFC...
Par ailleurs, si ton cas est simple à appréhender (pour la condition 2), il fait partie de cas relativement difficile à formuler sur une seule formule à partir des plages source, en raison de limitations de certaines fonctions Excel (au cas particulier NB.SI ne fonctionnant pas avec des matrices autres que plages de cellules...). Cela conduit soit à passer par des calculs intermédiaires (placés en colonnes masquées le cas échéant), soit à créer une fonction personnalisée réalisant le calcul voulu...
Dans l'immédiat on peut formuler avec l'addition de SOMMEPROD mais si le nombre de libellés à tester s'accroît, il y aura un moment où il faudra opter pour une autre voie si l'on veut éviter un allongement considérable de la formule. A voir au fil de l'évolution...
Cordialement.
Je te remercie pour tes réponses et ta réactivité
Il n'est pas pévu dans l'immédiat que le nombre de libéllés augmente, c'était surtout pour prévoir le jour où quelqu'un d'autre reprend la main sur mon classeur et lui éviter des comportements étranges en cas de modif.