'### A adapter (cellule de destination) ###
Const DEST As String = "I3"
'##########################################
Sub Classement()
Dim var
Dim R As Range
Dim T()
Dim i&
Dim j&
Dim cpt&
Dim rang&
ActiveSheet.Range("a3:f19").Copy
With Range(DEST)
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
End With
Set R = Selection
R.Sort Key1:=R.Range("c1"), Order1:=xlDescending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
var = R
ReDim T(1 To UBound(var, 1), 1 To UBound(var, 2))
cpt& = 1
For j& = 1 To UBound(var, 2)
T(1, j&) = var(1, j&)
Next j&
For i& = 2 To UBound(var, 1)
If IsNumeric(var(i&, 3)) And (var(i&, 3) <> 0 Or var(i&, 3) = "") Then
cpt& = cpt& + 1
If var(i&, 3) <> var(i& - 1, 3) Then
rang& = rang& + 1
var(i&, 1) = rang&
Else
var(i&, 1) = rang&
End If
For j& = 1 To UBound(var, 2)
T(cpt&, j&) = var(i&, j&)
Next j&
End If
Next i&
For i& = 2 To UBound(var, 1)
If Not IsNumeric(var(i&, 3)) And (var(i&, 3) <> 0 Or var(i&, 3) = "") Then
cpt& = cpt& + 1
For j& = 1 To UBound(var, 2)
T(cpt&, j&) = var(i&, j&)
Next j&
End If
Next i&
For i& = 2 To UBound(var, 1)
If var(i&, 3) = 0 Or var(i&, 3) = "" Then
cpt& = cpt& + 1
For j& = 1 To UBound(var, 2)
T(cpt&, j&) = var(i&, j&)
Next j&
End If
Next i&
R = T
End Sub