Sub Copie(F As Worksheet, Sh As Worksheet)
If Not Sh.Name Like F.Name & "?" Then Exit Sub
Dim lettre As String, mem, lig As Long
lettre = Right(Sh.Name, 1)
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'à cause des liaisons...
mem = F.[F4:R4] 'mémorise
F.[T1:AF1].Offset(Application.Match(lettre, F.[S2:S4], 0)).Copy F.[F4]
F.Cells.Copy Sh.[A1] 'pour les formats
Sh.UsedRange = F.UsedRange.Value 'supprime les formules
F.[F4:R4] = mem
lig = Sh.UsedRange.Row + Sh.UsedRange.Rows.Count - 1
If lig < 5 Then Exit Sub 'début en ligne 5
With Sh.Range(Sh.Cells(5, 5), Sh.Cells(lig, 5))
Me.Names.Add "matrice", .Value 'nom défini par une matrice
.FormulaArray = "=LN(matrice=""" & lettre & """)"
.Value = .Value
.EntireRow.Sort .Cells(1), Header:=xlNo 'tri pour accélérer la suppression
On Error Resume Next
.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
.Value = lettre
Me.Names("matrice").Delete
End With
End Sub