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 47 48
| 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 50 ' compte le nombre de colonne a rapatrier
decal = 1 * i 'si absence de cette ligne, alors la colonne n'est pas copiée
'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 merci le code fonctionne tres bien sans X
' 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 à 100: A = Nb de N° a tester
For A = 20 To 100
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")
Range("C20").FormulaR1C1 = Str_Val_1 & "17C6)"
Range("C20").AutoFill Destination:=Range("C20:C79"), Type:=xlFillDefault
' 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