[COLOR="DarkSlateGray"]Sub compteval()
Dim coll As New Collection, oCel As Range, c As Long
With Range("DATA") [COLOR="SeaGreen"]'Ici "A5:H23"
' On utilise une Collection pour dresser la liste des valeurs distinctes dans _
la plage "DATA"[/COLOR]
On Error Resume Next
For Each oCel In .Cells
coll.Add Item:=oCel.Value, Key:=CStr(oCel.Value)
Next oCel
On Error GoTo 0
[COLOR="SeaGreen"]' On récupère les éléments de la Collection dans un tableau, et pour chaque _
valeur récupérée, on compte le nombre d'occurrences de la dite valeur.[/COLOR]
ReDim odat(1 To coll.Count, 1 To 2)
For c = 1 To coll.Count
odat(c, 1) = WorksheetFunction.CountIf(.Cells, coll.Item(c))
odat(c, 2) = coll.Item(c)
Next c
End With
[COLOR="SeaGreen"]' On efface les résultats trouvés précédemment (s'il y en a !) et on affiche _
le résultat de la recherche.[/COLOR]
With Range("COMPTE") 'Ici "I5"
.Value = " "
.Resize(1 + .Offset(-1, 0).End(xlDown).Row - .Row, 2).ClearContents
.Resize(coll.Count, 2).Value = odat
End With
End Sub[/COLOR]