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
| Sub Calculs()
Dim Plage As Range, Dico As Object, Données, C As Range, Ligne As Long, Div As Double
Dim Machines1() As String, Machines2() As Double, Ctr As Integer
ReDim Machines1(0)
ReDim Machines2(0)
Ctr = -1
Set Dico = CreateObject("Scripting.Dictionary")
Set Sh = Sheets("Cadence")
With Sheets("Feuil1")
Set Plage = .Range(.[A4], .Cells(.Rows.Count, 1).End(xlUp))
For Each C In Plage
If Not Dico.exists(C.Value) Then
Dico.Add C.Value, C.Value
Ctr = Ctr + 1
ReDim Preserve Machines1(Ctr)
ReDim Preserve Machines2(Ctr)
Machines1(Ctr) = C.Value
End If
Next C
Données = Plage.Resize(, 10)
For i = 1 To UBound(Données, 1)
Ligne = Application.Match(Données(i, 1), Machines1, 0) - 1
Div = CDbl(Replace(Données(i, 10), " ", ""))
Machines2(Ligne) = Machines2(Ligne) + (CDate(Données(i, 6)) - CDate(Données(i, 5))) * 24 / Div
Next i
End With
With Sheets("Cadence")
.[A3:B1000].ClearContents
For i = 0 To UBound(Machines1)
.[A3].Offset(i) = Machines1(i)
.[B3].Offset(i) = Machines2(i) / Application.CountIf([Feuil1!A:A], Machines1(i))
Next i
.[A3:B1000].Sort .[A3], xlAscending, Header:=xlNo
End With
End Sub |