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 Impliqué
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
 

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