Sub Synthese()
Dim f1 As Worksheet, f2 As Worksheet
Dim DerLig_f1 As Long, DerLig_f2 As Long, i As Long
Dim NbLig As Long, NbCol As Long
Application.ScreenUpdating = False
Set f1 = Sheets("Synthese")
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Synthese" Then
Set f2 = Sheets(Sheets(i).Name) 'feuille traitée
f2.Range("NI1") = "Solutions"
NbCol = f2.[XFD1].End(xlToLeft).Column 'Dernière colonne de la feuille 2
f2.AutoFilterMode = False 'suppression des filtres existants
f2.Range(f2.Cells(1, "A"), f2.Cells(1, NbCol + 1)).AutoFilter 'Ajout du filtre
DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row ' Dernière ligne de la feuille traitée
'Forçage de la syntaxe des formules dans les cellules suivantes
f2.Range("AB2:AB" & DerLig_f2).FormulaR1C1 = "=IF(RC[-6]<RC[-5],""VRAI"",""FAUX"")"
f2.Range("KY2:KY" & DerLig_f2).FormulaR1C1 = "=IF(AND(RC[-1]>=RC[-3],RC[-1]>RC[-5]),""VRAI"",""FAUX"")"
f2.Range("MW2:MW" & DerLig_f2).FormulaR1C1 = "=IF(AND(RC[-3]>RC[-2],RC[-359]<RC[-358]),""CR"",""FAUX"")"
f2.Range("MX2:MX" & DerLig_f2).FormulaR1C1 = "=IF(AND(RC[-4]<RC[-3],RC[-360]>RC[-359]),""CR"",""FAUX"")"
'Ajout d'une colonne supplémentaire avec une formule qui reprend toutes les conditions requises
f2.Range("NI2:NI" & DerLig_f2).FormulaR1C1 = "=IF(AND(RC28=""VRAI"",RC311=""FAUX"",RC324<=1,RC325=0,RC358>7,RC360=8,RC361=""FAUX"",RC362=""FAUX""),""X"","""")"
f2.Range("A1:NI" & DerLig_f2).AutoFilter Field:=NbCol, Criteria1:="X" 'filtre sur cette colonne à la recherche des "X"
NbLig = f2.Range("_FilterDataBase").Resize(, 1).SpecialCells(xlCellTypeVisible).Count - 1 ' nombre de lignes restantes après filtrage
'Récupération de la zone filtrée et copie dans la feuille 1
DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne de la feuille synthèse
f2.Range("_FilterDataBase").Offset(1, 0).Resize(, NbCol).SpecialCells(xlCellTypeVisible).Copy Destination:=f1.Range("B" & DerLig_f1 + 1)
If NbLig > 0 Then Range(f1.Cells(DerLig_f1 + 1, "A"), f1.Cells(DerLig_f1 + NbLig, "A")) = Sheets(i).Name 'ajout du nom de la feuille en colonne A
f2.AutoFilterMode = False 'Suppression des filtres de la feuille traitée
End If
Next i
f1.Select
Set f1 = Nothing
Set f2 = Nothing
End Sub