Comptage à Condition Multiple

  • Initiateur de la discussion M.Charlotte
  • Date de début
M

M.Charlotte

Guest
Chers tous,
Je voudrais compter en A2 le nombre de cellules qui correspondent aux conditions suivantes:
- colonne B = Nature
Et
- colonne C >=0
Je ne vois pas comment y arriver en utilisant NB.SI. Pourriez-vous m'indiquer comment faire?
Bien à vous,
M.Charlotte
 
M

M.Charlotte

Guest
Je ne veuw malheureusement pas additioner les valeurs, mais les compter. Le formule Somme les additionne. Si je remplace Somme par NB, les résultats obtenus sont complètement abérrants.
Merci de votre aide.
M.Charlotte
 
C

Cathy

Guest
C'est presque pareil :

Function ComptageCouleur(PlageEntree As Range, CouleurPlage As Range) As Double
Dim Cell As Range, ColorIndex As Integer
ColorIndex = CouleurPlage.Cells(1, 1).Interior.ColorIndex
TempSum = 0
On Error Resume Next
For Each Cell In PlageEntree.Cells
If Cell.Interior.ColorIndex = ColorIndex Then TempSum = TempSum + 1
Next Cell
On Error GoTo 0
Set Cell = Nothing
ComptageCouleur = TempSum
End Function

C@thy
 

– €ric –

Guest
Salut,

Voici une variante de la formule matricielle

=SOMME((Critère_1="nature")*(Critère_2>0))

(valider avec CRTL+Shift+Entrée)
Critère_1 et Critère_2 étant des noms affectés aux colonnes B et C.



Bye et @ +



- €ric -​
 
J

Jean-Luc

Guest
Bonjour,

1 - J'use pour ma part d'une méthode très pragmatique :

11 - Créer colonne D (Cacher la colonne ensuite) contenant un 1 sur toutes les lignes (D2 à D10 dans mon exemple)

12 - Comptabliser les 1 des lignes à retenir en procédant par différence :
=SOMME.SI(B2:B10;"Nature";D2:D10)-SOMME.SI(C2:C6;"<=0";D2:D10)

2 - Il reste aussi la méthode des Bases de données avec définition d'une zone de critères si le tableau s'y prête

Cordialement
 
B

babou

Guest
Jean-Luc,
Je pense que tu te compliques la vie. Une formule matricielle resoud ce comptage sans besoin de rajouter une colonne supplementaire.
Je souligne qu'il s'agit bien d'une comptage, et non d'une somme.

Pour Cathy : mon xl est effectivement en Anglais :eek:( Je pensais bien qu'il fallait traduire les formules, mais pas les ";" :eek:))

Au fait, une tres bonne @ si vous devez retrouver les noms francais ou anglais des fonctions xl :

http://www.info-3000.com/vbvba/traductionfonction.php

Je l'utilise tres souvent.
Bonne soiree.
Babou.

PS : je peux demander de l'aide ici sur un fil que je viens d'ouvrir ? Bon OK, je sors...
 
J

Jean-Marie

Guest
Re: Explication d'un comptage avec une formule matricielle

Bonsoir, Charlotte

Une fonction matricielle, avec somme, ne compte pas la valeur de la cellule, mais la valeur du test.

Dans les cellules
A1 = 7; A2 = 4; A3 = 7
B1 = 10;B2 = 20;B3 = 15
C1 = 5; C2 = 8; C3 = 2

La formule matricielle = SOMME((A1:A3=7)*(B1:B3=10)) va compter
le nombre de valeurs qui correspond aux deux critères sur chaque cellule de la plage définie.
(A1=7) * (B1=10) -> donne 1 * 1 = 1
(A2=7) * (B2=10) -> donne 0 * 0 = 0
(A3=7) * (B3=10) -> donne 1 * 0 = 0
Résultat de la somme des conditions est 1, donc c'est bien un comptage.

Si la formule matricielle = SOMME((A1:A3=7)*(B1:B3=10)*C1:C3)
(A1=7) * (B1=10) * C1 -> donne 1 * 1 * 5 = 5
(A2=7) * (B2=10) * C2 -> donne 0 * 0 * 8 = 0
(A3=7) * (B3=10) * C3 -> donne 1 * 0 * 2 = 0
Résultat de la somme est 5 , donc c'est bien une somme.

La formule matricielle créer un tableau en mémoire du nombre de l'éléments de la plage. Puis met le résultat de la (fonction) dans le tableau et donne le résultat de la première fonction.
Pour schématiser =SOMME({1;0;0}), =SOMME({5;0;0})

Les formules matricielles sont très puissantes. Elles remplacent une colonne de cellules en D1 qui aurait cette formule SI(ET(A1=7;B1=10);C1;0) et une addition des cellules de D1:D3.

Il y a deux semaines, je ne connaissais rien aux formules matricielles. Mais en regardant, tous les exemples qui foisonnent sur le forum.
Une fonction que j'ai trouvé :
=GRANDE.VALEUR((ESTVIDE(Feuil1!B1:B4)=FAUX)*(LIGNE(Feuil1!B1:B4));B1)
donne la dernière cellule utilisée d'une plage B1:B4, en tenant compte de cellules pouvant être vides.
Pour schématiser =GRANDE.VALEUR({1;2;3;0};1) donc résultat 3

J'espère avoir donné, une petite explication sur l'utilisation des fonctions matricielles.

Bonne soirée.

@+Jean-Marie
 

Discussions similaires

Réponses
3
Affichages
181

Statistiques des forums

Discussions
314 017
Messages
2 104 578
Membres
109 081
dernier inscrit
Vio21