1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Sub test()
Dim C As Range, Res As String, Ligne As Long, Col As Integer
Application.ScreenUpdating = False
For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
If Left(C.Value, 5) = "aBCD-" Then
C.Offset(, 1).Value = C.Value
Else
C.Offset(, 1).Value = C.Offset(-1, 1).Value
End If
Next C
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Left(Cells(i, 1).Value, 5) = "aBCD-" Then Cells(i, 1).EntireRow.Delete
Next i
Range("A1", Cells(Rows.Count, 2).End(xlUp)).Sort [A1], xlAscending, [B1], , xlAscending, Header:=xlNo
For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
If C.Value <> Res Then
Res = C.Value
Ligne = Ligne + 1
Col = 4
Cells(Ligne, Col) = C.Value
Col = Col + 1
Cells(Ligne, Col) = C.Offset(, 1).Value
Else
Col = Col + 1
Cells(Ligne, Col) = C.Offset(, 1).Value
End If
Next C
Application.ScreenUpdating = True
End Sub |
Partager