Calcul occurrences sur uniques sur une plage en VBA

Bonjour,

j'essaye de dénombrer le nombre de valeurs uniques dans la colonne Z du fichier ci-joint.

Je ne comprend pas pourquoi cela ne fonctionne pas, la valeur renvoyée est invariablement 1.

Merci de votre aide.

Pierre

Bonjour,

n'accepte pas les vides

=SOMMEPROD(1/NB.SI(Z2:Z848;Z2:Z848))

valider avec maj+ctrl+entrée

accepte les vides

=SOMME(SI(Z2:Z848<>"";1/NB.SI(Z2:Z848;Z2:Z848)))

valider avec maj+ctrl+entrée

Méthode la + rapide.

Nb valeurs uniques:

Sub NbVaUniques()
  Set f = Sheets("données_rapatriées")
  Tbl = f.Range("z2:z" & f.[z65000].End(xlUp).Row).Value
  Nlig = UBound(Tbl)
  Set d = CreateObject("scripting.dictionary")
  For i = 1 To Nlig
   tmp = Tbl(i, 1)
   d(tmp) = d(tmp) + 1
  Next i
  [AD2] = d.Count
End Sub

Valeurs uniques avec nb occurences:

Sub NbUniques()
  Set f = Sheets("données_rapatriées")
  Tbl = f.Range("z2:z" & f.[z65000].End(xlUp).Row).Value
  Nlig = UBound(Tbl)
  Set d = CreateObject("scripting.dictionary")
  For i = 1 To Nlig
   tmp = Tbl(i, 1)
   d(tmp) = d(tmp) + 1
  Next i
  Set Rng = f.[AE2].Resize(d.Count, 2)
  Rng.Resize(d.Count) = Application.Transpose(d.keys)
  Rng.Offset(, 1).Resize(d.Count) = Application.Transpose(d.items)
  Rng.Sort key1:=Rng.Offset(1, 1), Order1:=xlDescending, Header:=xlNo
End Sub

Ceuzin

Bonjour,

Dans ta fonction : N = MaPlage.Count donne 1

N = Cells(Rows.Count, MaPlage.Column).End(xlUp).Row donne 848, le nombre de lignes.

ric

Bonjour,

Sub DénombrementClésUniques()
    Dim Plg As Range, n%
    With Worksheets("données_rapatriées")
        n = .Range("Z" & .Rows.Count).End(xlUp).Row
        Set Plg = .Range("Z2:Z" & n)
    End With
    On Error GoTo TestErreur
    n = Evaluate("SUMPRODUCT(1/COUNTIF(" & Plg.Address & "," & Plg.Address & "))")
    MsgBox n
    Exit Sub
TestErreur:
    MsgBox "Une erreur s'est produite..."
End Sub

m'affiche : 221.

Cordialement.

Merci à tous.

MFerrand j'ai retenu ta propo, marche nickel.

Ceuzin, je découvre les formules mtricielles, peux tu m'expliquer le raisonnement de ta proposition?

Merci.

Pierre

Merci Ceuzin

Rechercher des sujets similaires à "calcul occurrences uniques plage vba"