Bonjour Abdernino,
Je te propose le code suivant :
Option Explicit
Sub PopulateAllRecap()
PopulateRecap "1195", 10, ThisWorkbook.Worksheets("recap").Range("C12") 'Nbr de dossiers RA Materiel
PopulateRecap "1195", 11, ThisWorkbook.Worksheets("recap").Range("C13") 'Nbr de dossiers RC Materiel
PopulateRecap "1196", 10, ThisWorkbook.Worksheets("recap").Range("C14") 'Nbr de dossiers RA Corporel
PopulateRecap "1196", 11, ThisWorkbook.Worksheets("recap").Range("C15") 'Nbr de dossiers RC Corporel
MsgBox "Fin de calcul de la récap", vbExclamation
End Sub
Sub PopulateRecap(zCriteria1 As String, zField2 As Long, zRange As Range)
Dim oSheet As Worksheet
Dim oResultRange As Range, oRange As Range
Dim lNb As Long
'On réfère la feuille "base"
Set oSheet = ThisWorkbook.Worksheets("base")
'On réfère la plage à filtrer : de la ligne 13 à la dernière ligne remplie , de la colonne A à la colonne L
Set oRange = oSheet.Range(oSheet.Cells(13, 1), oSheet.Cells(oSheet.UsedRange.Rows.Count, 12))
'On efface tous les filtres au cas où
On Error Resume Next
oSheet.ShowAllData
On Error GoTo 0
'On spécifie le filtre 1195 sur la colonne "Ref Dossier"
oRange.AutoFilter 5, "=*" & zCriteria1 & "*", xlAnd
'On spécifie le filtre sur la colonne RA
oRange.AutoFilter zField2, ">0", xlAnd
'On calcule le nombre de lignes sélectionnées par le filtre
Set oResultRange = Intersect(oRange, oSheet.Range("A:A"))
lNb = Application.WorksheetFunction.Subtotal(103, oResultRange)
'On remplit la cellule de la feuille recap
zRange.Value = lNb
'On efface les filtres posé
oSheet.ShowAllData
'On fait le ménage
Set oRange = Nothing
Set oResultRange = Nothing
Set oSheet = Nothing
End Sub
Je mets ton EXCEL modifié en P.J.