il faut noter l"hauteur des lignes, faire le tri avec ces hauteurs dans la plage de sorter et puis ajuster les hauteurs.
Je ne sais pas si la manière de sorter changera beaucoup, autrement vous pouvez adapter la 2ième partie dans la macro.
Sub TRI()
Dim c, N
Application.ScreenUpdating = False
Set c = Range("B11").CurrentRegion 'plage à sorter
N = c.Columns.Count + 1 'nombre de colonne + 1 (auxiliaire)
'ShowFilters
If c.Parent.AutoFilterMode Then c.Parent.AutoFilterMode = False
'************************ajouter une colonne avec les hauteurs *************
For i = 1 To c.Rows.Count
c(i, N).Value = c(i, N).RowHeight 'ajouter hauteur original de la ligne dans la colonne suivante (auxiliaire)
Next
'************ ici le tri que vous voulez faire ***********IMPORTANT****A MODIFIER ************-
With c.Resize(, N)
.Sort .Range("A1"), xlDescending, , .Range("B1"), xlAscending, Header:=xlYes 'sorter la date
'****************adapter a l'hauteur précédent **********************************
Set dict = CreateObject("scripting.dictionary") 'cahier de brouillon
With .Columns(N) 'dernière colonne avec les hauteurs originaux
For i = 2 To .Rows.Count 'boucle toutes les lignes
dict(.Cells(i, 1).Value) = vbEmpty 'les hauteurs uniques
Next
End With
For i = 0 To dict.Count - 1 'boucle ces hauteurs uniques
h = dict.Keys()(i) 'un de ces hauteurs
.AutoFilter N, h 'filtrer toutes les lignes avec cet hauteur
.SpecialCells(xlVisible).EntireRow.RowHeight = h 'ajuster hauteur ligne comme avant le tri
Next
c.AutoFilter 'reset filtre
c(1, N).EntireRow.RowHeight = c(1, N).Value 'ajuster hauteur ligne de l'entête comme avant le tri
.Columns(.Columns.Count).ClearContents 'effacer colonne suivante
End With
Application.Goto c(1), 1
End Sub