1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| Sub TestABCDE()
Deb = Timer
Application.ScreenUpdating = False
'definition des variables
Dim shtFrom As Worksheet, shtTo As Worksheet
Dim A As Long, B As Long, X As Integer, Str_Val_1 As String, Str_Val_2 As String, Cel As Range
'initialisation du tableau
Sheets("A").Range("a20:c79").ClearContents
' I = NB DE COLONNES A RAPATRIER
For i = 1 To 150
decal = 1 * i
'copie successive des colonnes du tableau Z vers la colonne A20
Set shtTo = Worksheets("A")
Set shtFrom = Worksheets("A")
shtTo.Range("A20:A79").Value = shtFrom.Range("L20:L79").Offset(0, decal).Value
For X = 1 To 1
Select Case X
Case 1
Str_Val_1 = "=RC[-1]+sin(RC[-2]/R"
Set Cel = Range("F1")
End Select
' la formule est bouclée sur la totalité des valeurs de 20 à 59: A = Nb de N° a tester
For A = 20 To 360
Range("C20").FormulaR1C1 = Str_Val_1 & A & "C7)"
Range("C20").AutoFill Destination:=Range("C20:C79"), Type:=xlFillDefault
'le résultat du test est copié dans la cellule en face de la valeur A
Range("C12").Copy
Cel.Offset(A - 1, 0).PasteSpecial Paste:=xlPasteValues
' recalcul des données en fonction de la valeur max tableau
Str_Val_2 = "=RC[-1]+sin(RC[-2]/R"
Set Cel = Range("F1")
For B = 17 To 17
Range("C20").FormulaR1C1 = Str_Val_1 & B & "C6)"
Range("C20").AutoFill Destination:=Range("C20:C79"), Type:=xlFillDefault
Next B
Next A
Next X
'copie des résultats (en J pour controler l'augmentation des resultats, en I pour la valeur max)
shtTo.Range("I1").Offset(i - 1, 0).Value = shtFrom.Range("F17").Value
shtTo.Range("J1").Offset(i - 1, 0).Value = shtFrom.Range("F18").Value
shtTo.Range("b20:b79").Value = shtFrom.Range("c20:c79").Value
Next i
Application.ScreenUpdating = True
MsgBox "J'ai bossé " & Timer - Deb & " seconde"
End Sub |
Partager