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 30 31
| Sub essai2()
Dim t As Variant, T2(), x As Long, i As Long, k As Long
On Error Resume Next
Range("a2:i" & ActiveSheet.UsedRange.Rows.Count).Sort Key1:=Range("e2"), Order1:=xlAscending, Header:=xlGuess
Range("m2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(RC[-14]:RC[-4],"""")"
Range("m2:m" & Cells.Find("*", , , , , xlPrevious).Row).FillDown
t = Range("a2:m" & Range("a65536").End(xlUp).Row)
x = 1
For i = 1 To UBound(t)
If Left(t(i, 5), 2) = "06" Then t(i, 7) = t(i, 5): t(i, 5) = ""
t(i, 2) = Mid(t(i, 2), InStrRev(t(i, 2), "-") + 1)
t(i, 1) = UCase(t(i, 1)): t(i, 2) = UCase(t(i, 2)): t(i, 4) = UCase(t(i, 4)): t(i, 9) = UCase(t(i, 9))
t(i, 10) = t(i, 1) & t(i, 2) & t(i, 3) & t(i, 5)
t(i, 11) = t(i - 1, 1) & t(i - 1, 2) & t(i - 1, 3) & t(i - 1, 5)
If t(i, 10) <> t(i, 11) And t(i, 3) <> "" And t(i, 4) <> "" Then
t(i, 10) = "ok"
End If
If t(i, 10) = t(i, 11) And t(i, 3) <> "" And t(i, 4) <> "" Then
If Range("m" & i).Value < Range("m" & i - 1).Value Then
t(i, 10) = "ok": t(i - 1, 10) = ""
End If: End If
If t(i, 10) = "ok" Then
ReDim Preserve T2(1 To 9, 1 To x)
For k = 1 To 9: T2(k, x) = t(i, k): Next k: x = x + 1: End If: Next i
Cells.Clear
Range("a2").Resize(UBound(T2, 2), UBound(T2, 1)) = Application.Transpose(T2)
Application.ErrorCheckingOptions.BackgroundChecking = False
Range("E:G").NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
Erase t, T2
End Sub |