Posez votre question Signaler

[excel] NB si à deux critères? [Résolu/Fermé]

audrey - Dernière réponse le 10 déc. 2009 à 12:22
Bonjour,
je voudrais faire la formule NB si avec deux critères. je dois ajouter un critère chiffré et un critère lettré.
Merci d'avance
Lire la suite 
Réponse
+43
moins plus
Bonjour,

personnellement j'utilise la fonction matricielle
{=Somme(si((mazone1=moncritèrenum)*(mazone2=moncritèrealpha);1;0))}
les accolades sont obtenues par une validation CTRL+SHIFT+ENTER de la formule.

cordialement

beghinmatthieu- 10 déc. 2009 à 12:22
Super la formule matricielle !
Merci.
En voici pour info l'usage chez moi :
={SOMME(SI((INDIRECT("'"&C$1&"'!NiveauImportance")='Synthèse Dynamics AX'!$A12)*(INDIRECT("'"&C$1&"'!Réponses")=$A$5);1;0))}
Réponse
+11
moins plus
bonjour Cris

essaie ceci si j'ai compris ton souci : il faut que les 2 plages aient la même taille et que les valeurs "x" et "y" soient situées sur la même position relative.

=SOMME((plage1="x")*(plage2="y")*1)

c'est une formule matricielle à valider par ctrl +maj + entrée


Reeko- 19 févr. 2009 à 23:23
essaie ceci si j'ai compris ton souci : il faut que les 2 plages aient la même taille et que les valeurs "x" et "y" soient situées sur la même position relative. 
=SOMME((plage1="x")*(plage2="y")*1)


You saved my life !!! ;-)

MERCI. (ET VIVE LES FORUMS)
Réponse
+10
moins plus
la formule de gbin est bien plus simple et répond aussi a ce que je voulais faire,
mais j'aurais préféré trouver un opérateur "ou "
pour une formule de ce type:

=countif(plage,"text1" ou "text2")

désolé j'utilise une version en anglais de excel..
le countif = nb.si
et la virgule remplace le ;
évidemment le "ou" serait a remplacer avec un opérateur (un caractère) du type || ou un truc du genre.
qui permettrait d'éviter de retaper toute la séquence countif(plage1,xxx)+countif(plage1,xxx)
alors qu'on fait appel a la même fonction et qui plus est, sur la même plage...
Configuration: Windows XP Internet Explorer 6.0

Réponse
+7
moins plus
bonjour

Je suppose que tes données sont de A1 à B24.
En D1 tu saisis le code que tu veux totaliser.
Dans la cellule de totalisation tu mets la formule suivante :
=SOMME(($A$1:$A$24=$D$1)*($B$1:$B$24<>0)*1)

et tu valides avec CTRL + MAJ + ENTREE cette formule matricielle
qui sera ainsi mise entre crochets { formule } et fonctionne très bien.

Si tu veux additionner les sommes de la colonne B, tu peux faire de la même façon :
=SOMME(($A$1:$A$24=$D$1)*($B$1:$B$24))


Tiens nous au courant des tests...

Réponse
+6
moins plus
Bonjour

Pour être plus précis je souhaite dans le cadre d'un planning calculé le nembre d'heure mensuel que chaque personne fait.

ces heures ont une equivalence en lettre par exemple M (pour matin) = 7 H de 7h du matin à 14h, je dois attribué plusieurs M à plusieurs personnes dans différent lieu j'ai 6 lieux. Aussi pour identifier l'horaire à faire et le lieu j'utilise : M1,M2...M6. chaque association du M et d'une lettre vaut 7 heures aujourd'hui la formule pour avoir la somme de tout les M sur une ligne je fais formule suivante :
NB.SI(plage;"M1")*7+NB.SI(plage;"M2")*7+NB.SI(plage;"M3")*7+NB.SI(plage;"M4")*7+NB.SI(plage;"M5")*7+NB.SI(plage;"M6")*7

J'ai une dizaine de lettre différente encore a placer de la même manière. Je ne sais pas si c'est possible mais j'ai besoin de faire plus court car au bout 6 lignes de formules je ne peux plus enregistrer ma page.
existe-t-il quelque chose du type :
NB.SI(plage;"M1"+"M2"+...+"M6")*7 qui permettrait qu'à chaque fois qu'un M... existe la valeur 7 soit ajouté au total final ? et de la même manière pour B,N,L,S,D.... En sachant que B=6.5: N=10, total final sur la même cellule.

j'espère avoir été plus clair.
Merci d'avance de votre réponse
Cordialement
jean-louis

Réponse
+5
moins plus
bonjour simo,

Si tu avais essayé de comprendre les formules précédentes tu aurais vu que c'était assez simple :
=SOMME(($B$9:$B$86=1)*($T$9:$T$86=1)*1)


et tu valides avec CTRL + MAJ + ENTREE cette formule matricielle
qui sera ainsi mise entre crochets { formule } et fonctionne très bien.


Excel regarde dans chacune des plages, qui doivent être de même taille, le nombre de cellules de même rang qui satisfont au critère (=1) et pour avoir le nombre on multiple par 1 (*1).

Réponse
+4
moins plus
Merci gbin, la formule marche trop bien :)
Dernière petite requête, si je cherche une valeur "tout" dans la plage1, est ce que je met quelque chose entre les guillemets?
J'ai essayé de mettre * mais ca ne marche pas. J'ai aussi essayé de laisser les guillemets vides, sur 3 formules identiques que j'ai écrite il n'y en a qu'une qui marche et pas les deux autres (!!!).
Merci d'avance, @+

Réponse
+4
moins plus
bonjour

si j'ai essayé mais ça donne 0 au lieu de 2

Vérifie la formule que tu as saisie et elle doit être incorrectement encodée.
Toutes les parenthèses sont obligatoires à la bonne position, mais je viens de vérifier et c'est correct.

L'addition se fait sur les cellules de même rang, c'est-à-dire qu'il faut à la fois b10=1 et t10=1, sinon c'est zéro.
sinon, si tu veux les 1 sur les deux plages quel que soit la position, c'est ceci :
=SOMME(($B$9:$B$86=1)*1)+SOMME(($T$9:$T$86=1)*1)


à toi de voir ce que tu recherches... et tiens nous au courant.


toujours zen

Réponse
+3
moins plus
bonjour

si je cherche une valeur "tout" dans la plage1, est ce que je met quelque chose entre les guillemets?

Si tu ne veux pas faire de sélection dans la plage1, formulé autrement, il me semble que :
=NB.SI(plage2;"y") devrait faire le calcul ?

J'ai essayé de mettre * mais ca ne marche pas.

Tout à fait normal, car il teste la valeur de la cellule égale au caractère "*" et non à n'importe qu'elle valeur.

J'ai aussi essayé de laisser les guillemets vides,

Dans ce cas, il recherche les cellules vides, sans aucune valeur.

sur 3 formules identiques que j'ai ecrite il n'y en a qu'une qui marche et pas les deux autres (!!!).

Elles doivent être "presque" identiques car les mêmes formules donnent les mêmes résultats comme en mathématique !

Bon test &@+

Réponse
+2
moins plus
si j'ai essayé mais ça donne 0 au lieu de 2

Réponse
+2
moins plus
bonjour

merci ça marche mais tout à fait juste

Bon là il y a réellement un problème car dans un tableur comme en arthmétique ou en mathèmatiques, les résultats sont justes ou faux mais jamais "pas tout à fait justes"

En colonne B tu as trois fois la valeur 1 lignes 9, 10, 11.
En colonne T tu as 25 fois la valeur 1 lignes 9, 10, 12, 14, 22, 23, 24, 25, 27, 31, 32, 34, 35, 38, 39, 42, 53, 55, 56, 57, 59, 60, 61, 65 ,67
Et tu constates qu'il n'y a que les lignes 9 et 10 communes.
Et en mettant n'importe où la formule suivante, sauf dans les plages concernées, j'obtiens bien 2.
=SOMME(($B$9:$B$86=1)*($T$9:$T$86="1")*1)


aussi si jveux mettre la formule sur une ligne autre que la ligne 9 ça donne #valeur# pourtant c la valeur absolu des plages qu'on mets

Si tu saisis comme moi sur ton classeur sur n'importe qu'elle colonne, en dehors de B ou T, la formule suivante :
=SOMME(($B$1:$B$65000=1)*($T$1:$T$65000="1"))*1

Tu obtiens aussi 2, ce qui me parait normal et si tu obtiens #valeur# c'est que tu ne saisis pas correctement la formule, mais je n'ai pas réussi a obtenir cette erreur, même si j'ai pu en provoquer d'autres, alors je suis incapable de te donner l'erreur de manipulation commise. Par contre, si tu mets :
=SOMME((B:B=1)*(T:T="1"))*1)

tu obtiens "#NOMBRE!" ce qui est normal car la plage ne peux être une colonne entière.

Donc comme je te met les formules en format correct, tu fait un copier(ctrl + c) de ma ligne de formule et tu fais coller (ctrl+v) sur ton classeur dans la cellule voulue et tu valides la formule par CTRL+ MAJ + ENTER, car c'est une formule matricielle. Et la valeur sera totalement juste !



toujours zen

rapham3- 24 nov. 2008 à 12:53
il semble qu'on ne puisse pas effectuer de calcul avec un critère du type "*toto*"

par exemple:

=SOMME(($B$1:$B$65000=1)*($T$1:$T$65000="*toto*"))*1

En fait la formule est correcte, mais ca retourne toujours 0.

Dans mon cas, je ne devrais pas obtenir 0.

comment dois je proceder pour que ca prenne les * en compte??
gbinforme 10912Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2015Dernière intervention - 24 nov. 2008 à 16:16
bonjour

Ce genre de fonction ne prend pas en compte ce type codification et donc il te faut procéder autrement, éventuellement avec une colonne où tu filtres ce que tu veux par exemple en U1 :

=SI(TROUVE("toto";T1;1);1;0)

puis

=SOMME(($B$1:$B$65000=1)*($U$1:$U$65000=1))*1
Réponse
+2
moins plus
Bonjour à tous,
Une suggestion différente et que je trouve plus pratique à l'usage (et plus rapide) : sommeprod.
=sommeprod(--(condition1);--(condition2);...)
exemple : =sommeprod(--(Toulon!$B$1:$B$65535=1);--('La Garde'!$T$1:$T$65535=1))
(pas besoin de formule matricielle => un simple "entrée" sans ctrl-maj suffit)

Par ailleurs, si vous avez de grosses plages, je vous conseille de les nommer (menu Insertion-Nom), en plus ça clarifie l'expression. Vous pouvez même calculer l'expression qui définit vos plages nommées, mais c'est une autre histoire... (Essayez =decaler($A$1;0;nbval($A:$A)) pour couvrir toutes la partie utilisée d'une colonne.)

Réponse
+1
moins plus
bonjour

je voudrai faire la formule NB si avec deux critères.

tu peux toujours faire : nb.si(plage;"x")+nb.si(plage;"y")

si c'est bien pour compter les occurences.


peter45 16Messages postés lundi 9 avril 2007Date d'inscription 31 décembre 2011Dernière intervention - 18 mai 2007 à 22:51
tu peux toujours faire : nb.si(plage;"x")+nb.si(plage;"y")
ça serait pas plutôt ?
si(nb.si(plage;"x")*nb.si(plage;"y")>0;1;0)
Axl Rose 3Messages postés vendredi 20 juillet 2007Date d'inscription 25 juillet 2007Dernière intervention - 20 juil. 2007 à 11:09
C'est parfait !
Merci gbinforme :)
Réponse
+1
moins plus
bonjour

j'utilise : M1,M2...M6. chaque association du M et d'une lettre vaut 7 heures...
NB.SI(plage;"M1")*7+NB.SI(plage;"M2")*7+NB.SI(plage;"M3")*7...J'ai une dizaine de lettre différente encore.


Comment faire simple quand on a épuisé la complexité, il me semble que c'est l'objet de la question.
C'est pourtant plus simple de faire ainsi :
=NB.SI(plage;"M*")*7


Toutes les valeurs qui commencent par "M" seront prises en compte avec le caractère "*" et si tu ne veux que limiter sur un caractère quelconque il faut utiliser "?".

Réponse
+1
moins plus
Bonjour
j'ai également un problème de formule Excel
Voilà, j'ai deux colonnes:

A B

X 1
Y 0
Z 0
Z 4
Y 0
X 2

Je cherche une formule qui pour chaque lettre de la colonne A me compte le nombre de cases différentes de 0.
Ex: pour X: la formule doit inscrire 2, pour Y: 0, pour Z: 1

Pouvez vous m'aider?

Je vous remercie!!!

Réponse
+1
moins plus
Merci, c logique cke tu m'a expliké là mé ça marche pas non plus si tu veux jt'envoi le doc poour voir toi même

Réponse
+0
moins plus
bonjour simo_lem,

Dans la colonne T tu as des formules dans le style :
=SI(S9>21;"1";SI(S9>10;"2";SI(S9>6;"3";SI(S9>3;"4";SI(S9>1;"5";" ")))))

Donc tu obtiens une valeur "texte" égale à "1" et en colonne B tu tapes le "chiffre" 1, donc pour que ta formule fonctionne, il faut l'écrire ainsi :
=SOMME(($B$9:$B$86=1)*($T$9:$T$86="1")*1)

En gardant les bonnes définitions de format, tu verras que la formule fonctionne correctement !
En ayant les formules de la colonne T ainsi écrites, la formule que je t'avais donnée aurait parfaitement fonctionné :
=SI(S9>21;1;SI(S9>10;2;SI(S9>6;3;SI(S9>3;4;SI(S9>1;5;" ")))))

Il ne faut jamais mélanger les valeurs numériques avec les valeurs alphanumériques car elles ne sont surtout pas équivalentes.

Réponse
+0
moins plus
Bonjour,
merci ça marche mais tout à fait juste au moins c'est la première fois que ça me donne un chiffre, le problème c'est que ça me donne un 1 alors que normalement ça devrait donner 2, si tu regarde bien il y a 2 fois où l'on trouve 1 sur les 2 plages donc ça doit me donné 2, aussi si je veux mettre la formule sur une ligne autre que la ligne 9 ça donne #valeur# pourtant c la valeur absolu des plages qu'on mets
merci tout de même pour ton coup de main.

Réponse
+0
moins plus
Bonjour,

Effectivement ça marche mieux avec une plage fixée et non toute la colonne.
j'avais la même erreur et je pensai que c'était lié à la réference à un autre onglet du classeur dans la formule mais finalement il faut limiter la plage des critères.

Merci Gbinforme.

Réponse
+0
moins plus
Bonjour,

Effectivement ça marche mieux avec une plage fixée et non toute la colonne.
j'avais la même erreur et je pensai que c'était lié à la réference d'un autre onglet du classeur dans la formule mais finalement il faut juste limiter la plage des critères.

Merci Gbinforme.

Ce document intitulé «  [excel] NB si à deux critères?  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.