re, c'est plus facile, normallement, on le veut comme je l'ai fait, mais voici votre macro
Sub Berjac()
'*************************************************************************
'cette macro fonctionne pour R0 jusqu'à R99 et pour les lignes de 1 à 9.999
'on utilise la première colonne après vos données pour y mettre une formule, qu'on supprime après
'*************************************************************************
Dim iC
With ActiveSheet.UsedRange 'plage de vos données
iC = .Columns.Count + 1 'nombre de colonnes utilisées+1
With .Columns(iC) 'première colonne non-utilisée
.FormulaR1C1 = "=left(INDEX(C1,AGGREGATE(14,6,ROW(R1C1:RC1)/(LEFT(R1C1:RC1,1)=""R""),1)),3) & TEXT(ROW(),"" 0000"")" 'ajouter cette formule
.Value = .Value 'remplacer la formule par sa valeur
End With
.Resize(, iC).Sort .Cells(1, iC), Header:=xlNo 'trier la plage avec ces valeurs
.Columns(iC).ClearContents 'supprimer la colonne des formules
End With
End Sub