1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Sub Demo()
Dim DL As Long, Col As Integer, V
DL = Cells(Rows.Count, 1).End(xlUp).Row 'Dernière ligne remplie
Col = Cells(1).CurrentRegion.Columns.Count + 1 ' Numéro de la colonne après la dernière colonne utilisé
Application.ScreenUpdating = False
With Range(Cells(1, Col), Cells(DL, Col))
.FormulaLocal = "=SI($A1 = ""X"";1;0)" 'on applique la formule sur la colonne supplémentaire
.Value = .Value
End With
With Cells(1).CurrentRegion
.Sort Columns(Col), xlAscending, Header:=xlNo 'on trie dans l'ordre croissant les données via la colonne supplémentaire ou l'on a mis la formule
V = Application.Match(1, .Columns(Col), 0) 'on repère ou se trouve le 1er "1" dans la colonne supp
If Not IsError(V) Then
Rows(V & ":" & .Rows.Count).EntireRow.Clear 'on efface l'ensemble des lignes dont la valeur est 1 dans la colonne supp. précédemment triée
End If
.Columns(Col).Clear 'on efface la colonne supplémentaire
End With
Application.ScreenUpdating = True
' PS : et tout cela peut se faire manuellement comme expliqué dans les posts ci-dessus
End Sub |