Bonjour à tous ,
De temps en temps, c'est vraiment du n'importe quoi l'IA ! Tout code "un peu pensé" aboutit à quelque chose de plus concis et plus rapide.
Voici un code (dans Module1) :
Sub Trier()
Dim der&, t, ref, i&
Application.ScreenUpdating = False
With ActiveSheet
der = .Cells(Rows.Count, "b").End(xlUp).Row ' N° dernière cellule remplie de la colonne B
t = .[a1].Resize(der) ' les valeurs de la colonne A transférées dans un array t
For i = 2 To UBound(t): t(i, 1) = IIf(t(i, 1) = "", t(i - 1, 1), t(i, 1)): Next ' si t(i,1) est vide alors il prend la valeur du dessus
.[a1].Resize(der) = t ' réécriture de t sue la feuille
.[a1].Resize(der, 7).Sort Key1:=.[a1], order1:=xlAscending, Header:=xlNo ' tri des données
t = .[a1].Resize(der): ref = t(1, 1) ' relecture des valeurs triées de la colonne A - ref est la première valeur
For i = 2 To der
If t(i, 1) = ref Then t(i, 1) = "" Else ref = t(i, 1) ' si t(i,1) est égal à ref, t(i,1)est mis à blanc
Next i ' sinon cette valeur devient la nouvelle référence ref
.[a1].Resize(der) = t ' réécriture de t sur la feuille
End With
End Sub