J'ai remarqué que l'erreur apparaissait lorsqu'un onglet n'avait pas de ligne complétée (exemple onglet RVI08_PO1 ici qui provoque l'erreur)
Dans ce cas, change la macro comme suit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim sw As Worksheet, plage As Range
If Not Sh.Name Like "Récap*" Then Exit Sub
Sh.Range("B6").CurrentRegion.Offset(1, 0).ClearContents
For Each sw In Worksheets
If Not sw.Name Like "Récap*" Then
If Right(sw.Name, 3) = Right(Sh.Name, 3) Then
If sw.Range("B6").CurrentRegion.Rows.Count > 2 Then
Set plage = sw.Range("B6").CurrentRegion.Offset(2, 0).Resize(sw.Range("B6").CurrentRegion.Rows.Count - 2, sw.Range("B6").CurrentRegion.Columns.Count)
plage.Copy Destination:=Sh.Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
End If
End If
End If
Next
End Sub