Private Sub GO4_Click()
Dim Debut As String, Fin As String
Dim S As Double, Total As Double
Dim Nblg As Long, lig As Long, L As Long
Dim Cel As Range, Plage As Range
Dim Dico, Tablo, P, m
Dim e, j As Integer
Dim Nombre As Double
TotalBonMois = ""
ConsoMois.Clear
ConsoMois.ColumnCount = 9
Debut = Me.Date4Deb4
If Not IsDate(Debut) Then
MsgBox "Veuillez Choisir Une Date"
Exit Sub
End If
Fin = Me.Date4Fin
If Not IsDate(Fin) Then
MsgBox "Veuillez Choisir Une Date"
Exit Sub
End If
Application.ScreenUpdating = False
With fc
.Cells.AutoFilter
Nblg = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("A1:A" & Nblg).AutoFilter field:=1, Criteria1:=">=" & CSng(CDate(Debut)), Operator:=xlAnd, Criteria2:="<=" & CSng(CDate(Fin))
On Error Resume Next
Set Plage = .Range("A6:K" & Nblg).SpecialCells(xlCellTypeVisible)
Tablo = Plage.Value
On Error GoTo 0
If Not Plage Is Nothing Then
Set Dico = CreateObject("Scripting.dictionary") 'dico des immat sans doublon
For m = LBound(Tablo, 1) To UBound(Tablo, 1)
If Tablo(m, 1) >= CDate(Debut) And Tablo(m, 1) <= CDate(Fin) And Tablo(m, 2) <> "" Then
If Not Dico.Exists(Tablo(m, 3)) Then Dico.Add Tablo(m, 3), Tablo(m, 2)
End If
Next m
m = Dico.keys 'liste des immat sans doublon
P = Dico.items 'type associé à l'immat
For lig = LBound(m) To UBound(m)
Me.ConsoMois.AddItem
Me.ConsoMois.List(lig, 0) = P(lig)
Me.ConsoMois.List(lig, 1) = m(lig)
For L = LBound(Tablo, 1) To UBound(Tablo, 1)
If Tablo(L, 3) = m(lig) Then
Total = Total + Tablo(L, 8)
End If
Next L
ConsoMois.List(lig, 6) = Total
Total = 0
Next lig
j = ConsoMois.ListCount - 1
For e = 0 To j
Nombre = CDbl(ConsoMois.List(e, 6))
S = CDbl(S) + CDbl(Nombre)
Next
TotalBonMois = S
End If
End With
Application.ScreenUpdating = True
End Sub