Dim Liste(), i%, Ind, L, T0
Application.ScreenUpdating = False
T0 = Timer
DL = Sheets("Données").Range("A65500").End(xlUp).Row
Tablo = Sheets("Données").Range("A1:A" & DL)
Ind = 0
For i = 1 To UBound(Tablo)
S = Split(Tablo(i, 1), ">")
For j = 0 To UBound(S) - 1
ReDim Preserve Liste(Ind)
Liste(Ind) = Mid(S(j), 2)
Ind = Ind + 1
Next j
Next i
' Colle la matrice résultat
[A:B].ClearContents
Range("A1").Resize(UBound(Liste) + 1, 1).Value = Application.Transpose(Liste)
' Calcul les occurences
Taille = Range("A1000000").End(xlUp).Row
For L = 1 To Taille
Cells(L, "B").FormulaR1C1 = Application.CountIf([A:A], Range("A" & L))
Next L
' Suppression des doublons
Range("$A$1:$B$" & Taille).RemoveDuplicates Columns:=1, Header:=xlNo
' Tri par occurence décroissante
Columns("A:B").Select
ActiveWorkbook.Worksheets("Analyse").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Analyse").Sort.SortFields.Add Key:=Range("B1:B" & Taille) _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Analyse").Sort
.SetRange Range("A1:B" & Taille)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' Actualisation de la barre de défilement verticale et mise en forme
[A1].Select
ActiveSheet.UsedRange
Range("A1:B1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
[A1] = "Item": [B1] = "Occurence"
Application.ScreenUpdating = True
MsgBox "Temps d'execution : " & Round(Timer - T0, 3) & "s" & Chr(10) & _
" Nombre de lignes analysées : " & DL & Chr(10) & _
"Nombre d'items trouvés : " & Range("A65500").End(xlUp).Row
End Sub