Sub Colonne1()
Const CMaxAbs = 100
Dim Limite As Double, TE(), TS(), L As Long, C As Long, CMax As Long, CLibre As Long, _
LDéb(1 To CMaxAbs) As Long, TypeCalcul(1 To CMaxAbs) As String
Limite = Feuil1.[I1].Value
TE = Intersect(Feuil1.[A3:G1048576], Feuil1.UsedRange).Value
ReDim TS(1 To UBound(TE, 1), 1 To CMaxAbs)
For L = 1 To UBound(TE, 1)
If (TE(L, 5)) <> "" Then
For C = 1 To CMax
CLibre = CLibre Mod CMax + 1
If TypeCalcul(CLibre) = "" Then Exit For
Next C
If C > CMax Then
If C > CMaxAbs Then MsgBox "Impossible de mener plus de " & CMaxAbs _
& " calculs simulatanément.", vbCritical, "Colonne1": Exit Sub
CMax = C
Else: C = CLibre: End If
LDéb(C) = L
TypeCalcul(C) = TE(L, 5)
End If
For C = 1 To CMax
Select Case TypeCalcul(C)
Case "ask": TS(L, C) = TE(LDéb(C), 7) * (TE(L, 2) - TE(LDéb(C), 6)) * 10000
Case "bid": TS(L, C) = TE(LDéb(C), 7) * (TE(LDéb(C), 6) - TE(L, 3)) * 10000
End Select
If TS(L, C) > Limite Then TypeCalcul(C) = ""
Next C, L
Intersect(Feuil1.[H3:FDX1048576], Feuil1.UsedRange).ClearContents
Feuil1.[H3].Resize(UBound(TS, 1), CMax).Value = TS
End Sub