Sub MacroTestPage2()
Dim heure As Long, minute As Long, seconde As Long
Dim Deb As Currency
Deb = Timer
'Application.ScreenUpdating = False
Range("Q1:AE6300").ClearContents
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim D As Integer
Dim calcul_divers(7)
Dim i, j As Byte
Dim valeur_stocker, valeur_precedente As Double
For A = -15 To -5
For B = (A + 1) To -4
For C = (B + 1) To -3
For D = (C + 1) To -2
' formule Excel en Q1
' Attention il faut verifier que j'ai mis les bonnes formules
calcul_divers(0) = "=IF(AND((RC[" & A & "]-RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]-RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=0),2,""""))"
calcul_divers(1) = "=IF(AND((RC[" & A & "]+RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]+RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=0),2,""""))"
calcul_divers(2) = "=IF(AND((RC[" & A & "]+RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]-RC[" & B & "])<(RC[" & C & "]+RC[" & D & "]),RC[-16]=0),2,""""))"
calcul_divers(3) = "=IF(AND((RC[" & A & "]-RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]-RC[" & B & "])<(RC[" & C & "]+RC[" & D & "]),RC[-16]=0),2,""""))"
calcul_divers(4) = "=IF(AND((RC[" & A & "]-RC[" & B & "])>(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]-RC[" & B & "])>(RC[" & C & "]-RC[" & D & "]),RC[-16]=0),2,""""))"
calcul_divers(5) = "=IF(AND((RC[" & A & "]+RC[" & B & "])>(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]+RC[" & B & "])>(RC[" & C & "]-RC[" & D & "]),RC[-16]=0),2,""""))"
calcul_divers(6) = "=IF(AND((RC[" & A & "]+RC[" & B & "])>(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]-RC[" & B & "])>(RC[" & C & "]+RC[" & D & "]),RC[-16]=0),2,""""))"
calcul_divers(7) = "=IF(AND((RC[" & A & "]-RC[" & B & "])>(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]-RC[" & B & "])>(RC[" & C & "]+RC[" & D & "]),RC[-16]=0),2,""""))"
For i = LBound(calcul_divers) To UBound(calcul_divers)
Range("Q1").FormulaR1C1 = calcul_divers(i) '"=IF(AND((RC[" & A & "]-RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=1),1,IF(AND((RC[" & A & "]-RC[" & B & "])<(RC[" & C & "]-RC[" & D & "]),RC[-16]=0),2,""""))"
'Application.ScreenUpdating = True
on error resume next
valeur_precedente = Range("q1").Value
'Application.ScreenUpdating = False
'ici mettre la bonne comparaison
If valeur_precedente > valeur_stocker Then valeur_stocker = Range("q1").Value: j = i
Next
Range("Q1").FormulaR1C1 = calcul_divers(j)
Range("Q1").AutoFill Destination:=Range("Q1:Q6300"), Type:=xlFillDefault
Range("V2").Formula = "=CountIf(Q1:Q6300,1)"
Range("V3").Formula = "=CountIf(Q1:Q6300,2)"
Range("V1").Formula = "=IF((V3+V2)=0,1,(100*V2)/(V3+V2))"
Range("V4").Formula = "=(V3+V2)"
'Evaluation et copie des resultats
If Range("V1").Value = Range("AA1").Value And Range("V4").Value > 100 Then
Range("AA1000").End(xlUp)(4).Resize(4, 1).Value = Range("V1:V3").Value
End If
If Range("V1").Value = Range("AB1").Value And Range("V4").Value > 100 Then
Range("AB1000").End(xlUp)(4).Resize(4, 1).Value = Range("V1:V3").Value
End If
If Range("V1").Value = Range("AC1").Value And Range("V4").Value > 100 Then
Range("AC1000").End(xlUp)(4).Resize(4, 1).Value = Range("V1:V3").Value
End If
If Range("V1").Value = Range("AD1").Value And Range("V4").Value > 100 Then
Range("AD1000").End(xlUp)(4).Resize(4, 1).Value = Range("V1:V3").Value
End If
If Range("V1").Value > Range("AA1").Value And Range("V4").Value > 100 Then
Range("AB1:AD1000").Value = Range("AA1:AC1000").Value
Range("AA1:AA1000").ClearContents
Range("AA1:AA3").Value = Range("V1:V3").Value
Range("W1") = A
Range("W2") = B
Range("W3") = C
Range("W4") = D
End If
Next D
Next C
Next B
Next A
heure = (Timer - Deb) \ 3600
minute = ((Timer - Deb) - heure * 3600) \ 60
seconde = (Timer - Deb) - (heure * 3600) - minute * 60
Range("S1") = heure & " : " & minute & ":" & seconde
'ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub