Office 365 compter le nombre d'occurences dans une colonne en fonction d'un critère (sumproduct)

camille_13

XLDnaute Nouveau
Bonjour,

je croyais avoir trouvé ma solution sur ce forum, mais la formule que j'ai faite me renvoie une valeur erronée.
Je cherche à savoir, selon le critère de l'année, combien de boutiques différentes ont vendu des produits.
j'ai les éléments suivants:

Col E Col H
Année Nom boutique
2017 boutique A
2017 boutique B
2018 boutique A
2018 boutique B
2018 boutique C
2018 boutique B

j'ai fait la formule suivante : =SUMPRODUCT(('STATMENS'!$E$9:$E$13459="2018")*1/COUNTIF('STATMENS'!$H$9:$H$13459;'STATMENS'!$H$9:$H$13459))

Ca ne me renvoie pas la bonne valeur.
Par contre si j'enlève le critère d'année, la valeur retournée est la bonne..

Pourriez-vous m'aider svp ?

Merci par avance !
 

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour camille_13,

un essai en fichier joint avec 2 formule différente dont une proposée par job75

Cordialement
 

Fichiers joints

camille_13

XLDnaute Nouveau
Bonjour le Forum,
Bonjour camille_13,

un essai en fichier joint avec 2 formule différente dont une proposée par job75

Cordialement

Bonjour Jocelyn,

merci beaucoup pour ta réponse.
J'ai essayé la première formule mais elle me renvoie 0 et la deuxième me renvoie -1 par rapport au bon compte. Une idée ?
J'ai joint le fichier avec mes données réelles. Dans la deuxième feuille, mon ancienne méthode manuelle: je filtrais mes données dans la base, pour le coller dans une autre feuille et je faisais remove duplicate … (sans commentaire ^^)

Merci par avance,
Camille
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour camille_13, Jocelyn,

Puisqu'on utilise la fonction LIGNE il faut faire commencer les plages en ligne 1, voyez le fichier (1) joint.

Ou si l'on fait commencer les plages en ligne 2 il faut ajouter -1 dans la formule, fichier (2).

A+
 

Fichiers joints

job75

XLDnaute Barbatruc
Re, salut JHA,

On aura remarqué qu'avec les formules le calcul prend du tremps.

Pour aller vite on peut utiliser cette fonction VBA, à placer impérativement dans un module standard :
VB:
Function F(ref As Range, plage As Range)
Dim x$, tablo, d As Object, i&, y$
x = LCase(ref) 'minuscules, pour ignorer la casse
tablo = Intersect(plage, plage.Parent.UsedRange) 'matrice, plus rapide
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(tablo)
    y = LCase(tablo(i, 1))
    If y = x Then d(y & Chr(1) & tablo(i, 2)) = ""
Next
F = d.Count
End Function
Elle est utilisée dans cette formule en E2, à tirer vers le bas :
Code:
=F(D2;A:B)
Fichier .xlsm joint.

A+
 

Fichiers joints

camille_13

XLDnaute Nouveau
Bonjour camille_13, Jocelyn,

Puisqu'on utilise la fonction LIGNE il faut faire commencer les plages en ligne 1, voyez le fichier (1) joint.

Ou si l'on fait commencer les plages en ligne 2 il faut ajouter -1 dans la formule, fichier (2).

A+

Bonjour Job75,
D'accord ça fonctionne bien maintenant, j'avoue que je n'avais pas tous les tenants et aboutissants de la formule !
Merci beaucoup et bon week-end !
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas