Bonjour,
A tester :
Option Explicit
Sub Contrepartie()
Dim I As Integer, DerniereLigne As Integer, PremiereLigne As Integer
Dim AireATrier As Range, AireIndex As Range, AireCompte As Range
With ActiveSheet
DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
PremiereLigne = DerniereLigne + 1
For I = 2 To DerniereLigne
.Cells(I, 5) = I
Next I
.Range(.Cells(2, 1), .Cells(DerniereLigne, 5)).Copy Destination:=.Cells(PremiereLigne, 1)
DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
For I = PremiereLigne To DerniereLigne
.Cells(I, 3) = -.Cells(I, 3)
.Cells(I, 4) = "471000"
Next I
Set AireATrier = .Range(.Cells(1, 1), .Cells(DerniereLigne, 5))
Set AireIndex = .Range(.Cells(1, 5), .Cells(DerniereLigne, 5))
Set AireCompte = .Range(.Cells(1, 4), .Cells(DerniereLigne, 4))
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=AireIndex, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add2 Key:=AireCompte, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange AireATrier
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
.Columns(5).ClearContents
Set AireATrier = Nothing: Set AireIndex = Nothing: Set AireCompte = Nothing
End With
End Sub