Option Explicit
Private Sub Worksheet_Activate()
Dim Te(), Le&, Ts(), Ls&, Spl$(), Code&, Cs&, Fusion As Boolean
Te = FSrc.[A1].Resize(FSrc.Cells(FSrc.Rows.Count, "A").End(xlUp).Row).Value
ReDim Ts(1 To 5000, 1 To 8)
For Le = 1 To UBound(Te): Code = Split(Te(Le, 1), "=")(0)
Select Case Code
Case 50, 2, 5: GoSub Fusionner: Ls = Ls + 1: Cs = 1
Case 7 To 9: Cs = Code - 7 + 2
Case 17 To 18: Cs = Code - 17 + 5: Fusion = True
' Case 24 To 25: Cs = Code - 24 + 7
Case Else: GoTo S: End Select
Ts(Ls, Cs) = Te(Le, 1)
S: Next Le
GoSub Fusionner
Me.Cells.ClearContents
Me.[A1].Resize(Ls, 4).Value = Ts
Exit Sub
Fusionner: If Fusion Then
Ts(Ls - 1, 2) = "7=" & Trim$(Str((VCodée(Ts(Ls, 5)) + 200 + VCodée(Ts(Ls - 1, 2))) / 2))
Ts(Ls - 1, 3) = "8=" & Trim$(Str((400 - VCodée(Ts(Ls, 6)) + VCodée(Ts(Ls - 1, 3))) / 2))
Ts(Ls - 1, 4) = "9=" & Trim$(Str((VCodée(Ts(Ls, 4)) + VCodée(Ts(Ls - 1, 4))) / 2))
Ls = Ls - 1: Fusion = False: End If: Return
End Sub
Private Function VCodée(ByVal Z As String) As Double
VCodée = Val(Mid$(Z, InStr(Z, "=") + 1))
End Function