Private Sub Worksheet_Activate()
Dim lig&, coldeb%, w As Worksheet, h&, s, ub As Byte, col%
Application.ScreenUpdating = False
lig = 3 '1ère ligne de restitution
coldeb = 2 '1ère colonne
Rows(lig & ":" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
If w.Name <> Me.Name Then
With w.[A1].CurrentRegion
h = .Rows.Count - 1
If h Then
.Offset(1).Resize(h).Copy Cells(lig, coldeb + 4)
s = Split(w.Name, "_")
ub = UBound(s)
For col = coldeb To coldeb + IIf(ub > 3, 3, ub)
Cells(lig, col) = s(col - coldeb)
Next
Cells(lig, coldeb).Resize(, 4).Copy Cells(lig, coldeb).Resize(h, 4)
lig = lig + h
End If
End With
End If
Next
End Sub