Bonjour,
Sub CodesFréquence()
Dim d As Object, c As Range, n%, i%, j%, cd$, cod, frq
Set d = CreateObject("Scripting.Dictionary")
For Each c In ActiveSheet.UsedRange
If c.Value <> "" Then
If d.exists(c.Value) Then
n = CInt(d(c.Value)) + 1: d(c.Value) = n
Else
d(c.Value) = 1
End If
End If
Next c
cod = d.keys: frq = d.items
For i = LBound(frq) To UBound(frq)
frq(i) = CInt(frq(i))
Next i
For i = LBound(frq) To UBound(frq) - 1
For j = i + 1 To UBound(frq)
If frq(j) > frq(i) Then
n = frq(j): cd = cod(j)
frq(j) = frq(i): cod(j) = cod(i)
frq(i) = n: cod(i) = cd
End If
Next j
Next i
With Worksheets.Add
.Range("A1").Resize(d.Count).Value = WorksheetFunction.Transpose(cod)
.Range("B1").Resize(d.Count).Value = WorksheetFunction.Transpose(frq)
End With
End Sub
Tu colles la macro ci-dessus dans ton classeur (dans un module standard). Tu la lances, ta feuille de codes étant la feuille active, et elle te listera tous les codes dans une nouvelle feuille par fréquence décroissante.
Cordialement.