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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| Sub Compile_Data()
Dim i As Long, IDLR1 As Long
Dim Txt1 As String, Txt2 As String, Month As String
Dim Matrix As Range, MatrixLC As Range
Application.ScreenUpdating = False
'Paramétrage des en-têtes de colonnes et suppression des données inutiles
With Sheets("Initial Data")
.Range("A1:J1") = Array("N° Parc", "Période de roulage", "Kilométrage", "Kms parcourus", "Catégorie", "Type", "Site", "N° Immatriculation", "Kilométrage au 1er jour du mois", "Kilométrage au dernier jour du mois")
For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1
Txt1 = Left(.Cells(i, 1), 2)
Txt2 = Right(Left(.Cells(i, 1), 5), 2)
If Txt1 <> "KM" Or Txt2 = "CF" Then
.Cells(i, 1).EntireRow.Delete
End If
Next i
'Reformatage des n° de véhicules et paramétrage du mois traité
IDLR1 = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A2:A" & IDLR1).Replace What:="KM-", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
.Range("C2:D" & IDLR1).Replace What:="*", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
DefineMonth:
Month = UCase(InputBox("Entrez le mois traité au format mm/aaaa en saisissant bien le '/' entre le mois et l'année.", "Paramétrage de la période"))
If Len(Month) <> 7 Or IsNumeric(Left(Month, 2)) = False Or Right(Left(Month, 3), 1) <> "/" Or IsNumeric(Right(Month, 4)) = False Then
MsgBox "Vous n'avez pas entré la période au format attendu, merci de bien vouloir la saisir à nouveau.", vbCritical, "Erreur !"
GoTo DefineMonth
End If
With .Range("B2:B" & IDLR1)
.Value = Month
.NumberFormat = "mmm-yyyy"
End With
'Tri sur les n° de parc et calcul des premiers et derniers kilomètres du mois
With .Range("A1:J" & IDLR1)
.Sort Key1:=Worksheets("Initial Data").Range("A2"), Order1:=xlAscending, Header:=xlYes
End With
With .Range("I2:I" & IDLR1)
.Formula = "=IF(RC[-8]=R[-1]C[-8], R[-1]C, RC[-6]-RC[-5])"
.Value = .Value
End With
With .Range("J2:J" & IDLR1)
.Formula = "=IF(RC[-9]=R[1]C[-9], R[1]C, RC[-7])"
.Value = .Value
End With
Set MatrixLC = Sheets("Fleet T2C").Range("E" & Rows.Count).End(xlUp)
Set Matrix = Sheets("Fleet T2C").Range("A2", MatrixLC)
With .Range("E2:E" & IDLR1)
.Formula = "=+IF(ISERROR(VLOOKUP(RC[-4]," & Sheets("Fleet T2C").Range(Matrix) & ",2,0)),"""",VLOOKUP(RC[-4]," & Sheets("Fleet T2C").Range(Matrix) & ",2,0))"
.Value = .Value
End With
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub |
Partager