Bon, j'ai repris en main "à ma sauce"
Active les macros, ensuite tout est automatique.
Une compilation dans un onglet
Sub compiler()
Dim ligne As Long, ws As Worksheet
With Sheets("RECAP")
If Not .ListObjects(1).DataBodyRange Is Nothing Then .ListObjects(1).DataBodyRange.Delete
ligne = 2
For Each ws In Worksheets
If ws.Name <> "RECAP ALERTE" And ws.Name <> "RECAP" Then
ldeb = 2
lfin = ws.Cells(Rows.Count, 1).End(xlUp).Row
cdeb = 1
cfin = ws.Cells(2, Columns.Count).End(xlToLeft).Column
ws.Range(ws.Cells(ldeb, cdeb), ws.Cells(lfin, cfin)).Copy Destination:=.Cells(ligne, 1)
ligne = Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
Next
End With
With Sheets("RECAP").Cells.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Ensuite un filtrage selon les critères entrés
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "RECAP ALERTE" Then Exit Sub
If Not Intersect(Target, Sh.Range("A5").CurrentRegion) Is Nothing Then
filtrer Sh
End If
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
filtrer Sh
End Sub
Private Sub filtrer(Sh As Worksheet)
If Sh.Name <> "RECAP ALERTE" Then Exit Sub
compiler
Sh.Range("A9").Offset(1, 0).Clear
Sheets("RECAP").ListObjects(1).Range.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sh.Range("A1").CurrentRegion, CopyToRange:=Sh.Range("A9").CurrentRegion.Resize(1), Unique:=False
End Sub