Compter le nombre de valeur différentes

zourite

XLDnaute Junior
Bonsoir !

J'ai une liste de nombres, et j'aimerai trouver le nombre de valeurs différentes, exeptées les valeurs vides et les valeurs = 0

Y aurait-il une formule capable de faire cela?

merci d'avance
 

Pièces jointes

  • tessssssst.xls
    23.5 KB · Affichages: 201

ROGER2327

XLDnaute Barbatruc
Re : Compter le nombre de valeur différentes

Bonjour à tous
Une fonction personnalisée :
VB:
Function valdif&(r As Range)
Dim oCell As Range, oColl As Scripting.Dictionary
  Application.Volatile
  Set oColl = CreateObject("Scripting.Dictionary")
  For Each oCell In r.Cells
    If IsNumeric(oCell) Then If oCell.Value <> 0 And Not oColl.Exists(CStr(oCell.Value)) Then oColl.Add CStr(oCell.Value), oCell.Value
  Next
  valdif = oColl.Count
End Function
ROGER2327
#4993


Jeudi 5 Pédale 138 (Saint Ouducul, trouvère, SQ)
9 Ventôse An CCXIX
2011-W08-7T03:29:38Z
 

zourite

XLDnaute Junior
Re : Compter le nombre de valeur différentes

Bonjour david84, BOISGONTIER, Tibo, ROGER2327,hoerwind, kjin !

Merci à tous vos réponses, je suis en phase de test, je garderai la plus rapide des méthodes !!
A priori le code de Roger semble le plus rapide.

Je vous tiendrai au courant quand j'aurai fait mon choix final :)

encore merci et bonne journée !!
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Compter le nombre de valeur différentes

Bonsoir à tous
Une petite modification pour ne pas tenir compte d'éventuels zéros devant les nombres :
VB:
Function valdif2&(r As Range)
Dim oCell As Range, oColl As Scripting.Dictionary
  Application.Volatile
  Set oColl = CreateObject("Scripting.Dictionary")
  For Each oCell In r.Cells
    If IsNumeric(oCell) Then If oCell.Value <> 0 And Not oColl.Exists(CStr(0 + oCell.Value)) Then oColl.Add CStr(0 + oCell.Value), oCell.Value
  Next
  valdif2 = oColl.Count
End Function
Comparaison des différentes solutions dans le classeur joint.​
ROGER2327
#4994


Jeudi 5 Pédale 138 (Saint Ouducul, trouvère, SQ)
9 Ventôse An CCXIX
2011-W08-7T17:38:03Z
 

Pièces jointes

  • Compter le nombre de valeur différentes_158942.xls
    37.5 KB · Affichages: 232

david84

XLDnaute Barbatruc
Re : Compter le nombre de valeur différentes

Re
suite au fichier de comparaison de Roger :rolleyes: :
Code:
=SOMME(N(FREQUENCE(SI(SI(ESTERREUR(SI(C2:C21<>0;SUBSTITUE(C2:C21;".";",")*1));0;SI(C2:C21<>0;SUBSTITUE(C2:C21;".";",")*1));EQUIV(SUBSTITUE(C2:C21;".";",")*1;SUBSTITUE(C2:C21;".";",")*1;0));LIGNE(INDIRECT("1:"&LIGNES(C2:C21))))>0))
Validation matricielle.
A+

Edit : légèrement plus court :
Code:
=SOMME(N(FREQUENCE(SI(SI(ESTERREUR(SI(C2:C21<>0;SUBSTITUE(C2:C21;".";",")*1));0;SI(C2:C21<>0;SUBSTITUE(C2:C21;".";",")*1));EQUIV(SUBSTITUE(C2:C21;".";",")*1;SUBSTITUE(C2:C21;".";",")*1;0));LIGNE(C1:C21))>0))

ou bien avec NB :
Code:
=NB(1/(FREQUENCE(SI(SI(ESTERREUR(SI(C2:C21<>0;SUBSTITUE(C2:C21;".";",")*1));0;SI(C2:C21<>0;SUBSTITUE(C2:C21;".";",")*1));EQUIV(SUBSTITUE(C2:C21;".";",")*1;SUBSTITUE(C2:C21;".";",")*1;0));LIGNE(C1:C21))))
 
Dernière édition:

zourite

XLDnaute Junior
Re : Compter le nombre de valeur différentes

Hey !

Etant toujours entrain d'adapter ces solutions à mon cas, j'ai deux question:


@: ROGER2327 : Est-ce que la fonction =valdif2() fonctionne en matricielle? car je n'arrive pas à la faire marcher... j'ai joint un petit fichier ou j'ai mis mon essaie en bleu mais qui me donne une #VALEUR
Code:
=valdif(SI((B3:B22="Bien")*1;L3:L22))

@: David : Est-ce normal qu'à la fin de tes deux dernières formules il y ai :
LIGNE(C1:C21))))

alors que la plage utilisée pour tout le reste de tes formules est (C2:C21)


merci pour vos conseils !
 

Discussions similaires

Réponses
4
Affichages
236
Réponses
7
Affichages
369

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 763
dernier inscrit
p.michaux