XL 2013 Calculer le nombre de valeurs différentes en fonction de critères

lemarsupial69

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord, s'agissant de mon tout premier post sur ce forum, merci de vous montrer compréhensifs ;-)

Je suis autodidacte sur excel et ne maitrise pour l'instant que les formules de base

Dans le tableau joint au présent, je souhaiterais pourvoir calculer le nombre de n° de dossier différents répondant à deux critères (dans l'exemple, ville=lyon et type=location)

Merci d'avance
 

Fichiers joints

xUpsilon

XLDnaute Occasionnel
Bonjour,

Ci-joint une solution dans laquelle tu rentres la ville souhaitée dans une cellule, et récupère le nombre de dossiers associés à cette ville dans la cellule d'à coté.

Bonne continuation
 

Fichiers joints

lemarsupial69

XLDnaute Nouveau
Rebonjour à tous,

Merci pour vos propositions mais j'ai peut être mal exprimé ma requête.

Dans mon exemple, la colonne C contient des numéros de dossiers. Certains numéros reviennent plusieurs fois. Je souhaiterais savoir combien de numéros de dossiers différents répondent au critère LYON et LOCATION. Si un même n° de dossier répond plusieurs fois aux critères, il ne doit être compté qu'une fois.

Merci
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @lemarsupial69,

Pour simplifier la formule finale, on a ajouté une colonne auxiliaire (colonne E). Cette colonne contient la formule suivante en E2 à copier vers le bas:
Code:
=B2&"\"&D2&"\"&C2

Pour le calcul du nombre de dossiers, voir la formule matricielle en H3:
VB:
=SOMME((B2:B9=G2)*(D2:D9=G4)*(EQUIV(E2:E9;E2:E9;0)=LIGNE(E2:E9)-1))
Formule matricielle:
Cette formule doit être validée par la combinaison des trois touches Ctrl+Maj+Entrée au lieu de la seule touche Entrée.

edit : bonsoir @job75 :)
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Bonjour lemarsupial69, xUpsilon, mapomme,

Voyez le fichier joint et cette fonction VBA à placer impérativement dans un module standard :
VB:
Function NbDossier(debut As Range, crit1$, col1, crit2$, col2, coldossier)
Dim P As Range, d As Object, i&
If crit1 Like "<*>" Then crit1 = "*" 'caractère générique *
If crit2 Like "<*>" Then crit2 = "*"
crit1 = UCase(crit1): crit2 = UCase(crit2) 'majuscules
Set P = debut.Parent.Range("A1", debut.Parent.UsedRange)
col1 = Intersect(col1, P) 'matrice, plus rapide
col2 = Intersect(col2, P)
coldossier = Intersect(coldossier, P)
Set d = CreateObject("Scripting.Dictionary")
d.compareMode = vbTextCompare 'la casse est ignorée
For i = debut.Row + 1 To UBound(col1)
    If UCase(col1(i, 1)) Like crit1 And UCase(col2(i, 1)) Like crit2 And coldossier(i, 1) <> "" Then d(coldossier(i, 1)) = ""
Next
NbDossier = d.Count
End Function
Elles est utilisée en I5 avec cette formule :
Code:
=NbDossier(A1;G3;B:B;I3;D:D;C:C)
A+
 

Fichiers joints

lemarsupial69

XLDnaute Nouveau
Bonjour à tous,

Désolé pour ce retour tardif mais la semaine a été chargée. Ne maitrisant pas du tout le VBA, j'ai testé la proposition de mapomme qui marche parfaitement.

Merci à tous pour votre aide
 

Haut Bas