Sub Test()
Dim NOM As Object, t, P As Range, anne%, mois, tt(), i&, j&
Set NOM = CreateObject("Scripting.Dictionary")
NOM.CompareMode = vbTextCompare 'la casse est ignorée
With Feuil3
t = .Range("A2", .Range("S" & .Rows.Count).End(xlUp)(19)) 'toutes les colonnes mais pourquoi (19) ???
End With
With Sheets("Totaux")
On Error Resume Next 'si P ne peut pas être défini
Set P = .Range("A11:A" & .Range("A65536").End(xlUp).Row - 2)
If P.Row < 11 Then Exit Sub 'sécurité
On Error GoTo 0
annee = .Cells(2, 1)
mois = .Cells(2, 2)
End With
tt = P.Resize(, 2) 'au moins 2 éléments
For i = 1 To UBound(tt) 'liste des noms sans doublon et repérage de la ligne
If tt(i, 1) <> "" Then NOM(tt(i, 1)) = i
Next
ReDim tt(1 To P.Rows.Count, 1 To 2)
For i = 1 To UBound(t)
If NOM.exists(t(i, 19)) Then
If t(i, 18) = annee And t(i, 17) = mois And t(i, 16) = "Ac" Then
j = NOM(t(i, 19)) 'récupération de la ligne
tt(j, 1) = tt(j, 1) + t(i, 8)
tt(j, 2) = tt(j, 2) + t(i, 8) + t(i, 9) + t(i, 10) + t(i, 11)
End If
End If
Next
P.Columns(4).Resize(, 2) = tt 'restitution
End Sub