Nombre d'occurences differentes conditionné

wilfried_42

XLDnaute Barbatruc
Bonjour à tous

je vien de tomber sur un probleme, compter le nombre d'ocurrence differente qu'il y a dans une colonne en fonction d'une valeur dans une autre colonne

je me suis basé sur la formule matricielle suivante :
Code:
=SOMME(1/NB.SI(C1:C17;C1:C17))

et j'ai voulu la modifier pour comparer des matrices construites
Code:
=SOMME(1/NB.SI([COLOR="Blue"]SI(A1:A17="B";C1:C17;"zzzzzz")[/COLOR];[COLOR="Red"]SI(A1:A17;C1:C17;"zzzzzz")[/COLOR]))-1

Et là le hic, la 1ere matrice (en bleu) se construit bien, la 2eme (en rouge) pas du tout :eek:

j'ai biaisé, avec une colonne cachée, mais c'est pas terrible alors si quelqu'un a une solution

Merci à vous tous
 

wilfried_42

XLDnaute Barbatruc
Re : Nombre d'occurences differentes conditionné

re:

Bonjour et merci bruno, je suis lourd parfois mais je n'avais meme pas vu, à force de faire les essais, le 2eme test est resté dans le clavier

Mais ca ne marche toujours pas, avec l'audit de formule, j'obtiens bien mes 2 matrices, mais autant de #valeur

je joins une petit fichier Merci encore à vous tous
 

Pièces jointes

  • Matricielle.zip
    2.6 KB · Affichages: 45
  • Matricielle.zip
    2.6 KB · Affichages: 45
  • Matricielle.zip
    2.6 KB · Affichages: 44

wilfried_42

XLDnaute Barbatruc
Re : Nombre d'occurences differentes conditionné

Re:
Bonjour jasques :)

Merci beaucoup, c'est exactement ce que je cherchais, maintenant je vais l'etudier car je ne connais FREQUENCE que de vue, je vais approfondir cette fonction.

Merci encore et à bientot (sur le forum)

Cordialement
 

Bidibule44

XLDnaute Nouveau
Re : Nombre d'occurences differentes conditionné

Est il possible d'avoir deux critères. Une valeur dans une colonne et une autre valeur dans une autre colonne. J'ai essayer d'adapter la formule en intégrant un ET dans la fonction SI mais ça ne marche pas.
Merci
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Nombre d'occurences differentes conditionné

Bonjour,

=NB(1/FREQUENCE(SI((code=E1)*(Code2=F1);EQUIV(val;val;0));SI((code=E1)*(Code2=F1);EQUIV(val;val;0))))
Valider avec Maj+Ctrl+Entrée

JB
 

Pièces jointes

  • Copie de Matricielle2.xls
    16.5 KB · Affichages: 112
Dernière édition:

Bidibule44

XLDnaute Nouveau
Re : Nombre d'occurences differentes conditionné

Bonjour BOISGONTIER
Dis-moi, j'ai un gros problème de rapidité de calcul avec cette formule. Elle fonctionne très bien mais excel met environ 1/2 heure pour recalculer quand il ne beug pas. Mon fichier source est composé de plus de 6500 lignes et près de 8000 pour la fin d'année.
Aurai-tu une solution plus rapide.
Merci beaucoup
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Nombre d'occurences differentes conditionné

Bonjour tout le monde,
Cher Maitre Boisgontier, mes hommages

Bidibulle44,
Une solution serait peut-être de passer ça en VBA !

Code:
Function NbVal2Crit(Cel1 As Range, Cel2 As Range)
  Dim DerLig As Long, Lig As Long, Val1 As Variant, Val2 As Variant
  If Cel1.Column = Cel2.Column Then
    MsgBox "Les 2 valeurs à comparer ne peuvent pas être dans la même colonne !"
    Exit Function
  End If
  DerLig = Cells(Rows.Count, Cel1.Column).End(xlUp).Row
  NbVal2Crit = 0: Val1 = Cel1.Value: Val2 = Cel2.Value
  For Lig = 1 To DerLig
    If Cells(Lig, Cel1.Column) = Val1 And Cells(Lig, Cel2.Column) = Val2 Then
      NbVal2Crit = NbVal2Crit + 1
    End If
  Next
End Function

Et dans une cellule il suffit alors de mettre : =NbVal2Crit(A1;B1)

A tester ;)
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Nombre d'occurences differentes conditionné

Bonjour,

Avec une fonction personalisée( Il n'est pas sûr que ce soit + rapide)

Code:
Function CompteSansDoublons2(champ, champcritere, critere, champcritere2, critere2)
  Set MonDico = CreateObject("Scripting.Dictionary")
  For i = 1 To champ.Count
    If UCase(champcritere(i).Value) = UCase(critere) And _
       UCase(champcritere2(i).Value) = UCase(critere2) Then
      If Not MonDico.Exists(champ(i).Value) Then _
          MonDico.Add champ(i).Value, champ(i).Value
    End If
  Next i
  CompteSansDoublons2 = MonDico.Count
End Function
 

Pièces jointes

  • Copie de FonctionCompteSansDoublonsCritere.xls
    27.5 KB · Affichages: 90

Statistiques des forums

Discussions
312 220
Messages
2 086 381
Membres
103 198
dernier inscrit
CACCIATORE