Bonjour,
J'ai un souci avec le code ci-dessous : avec 1000 répétitions de la boucle principale ("AM10=1000"), j'en ai approximativement pour 24 heures à faire tourner la machine (Intel Core 2 duo à 2,2 GHz - Windows XP sur MacBook Pro) !! et je dois faire ça sur une vingtaine de feuilles...
A l'expérience, avez-vous une ou des idées pour gagner du temps de traitement ? quelques fractions de seconde par calcul feront au bout quelques heures en moins... 😱
Sub BBD()
Workbooks("ABONNEMENT.xls").Sheets("Calcul").Activate
Dim A As Currency, B As Currency, C As Currency, D As Integer, E As Integer, F As Integer
For F = 0 To 8 * Range("AM10").Value Step 8
Range("T248").End(xlDown).Select
If Range("T248") = Cells(xlCellTypeBlanks) Then E = 248 Else E = 1 +
Selection.Row - 8
D = 20
Cells(E + F, D).Select
Range("Pour").Value = Cells(E + F, D - 3).Value
Range("cumul1").Value = Cells(E + F, D - 2).Value
Range("retard").Value = Cells(E + F, D - 1).Value
A = -0.8
B = -0.15
C = -0.12
For C = -0.12 To 0.15 Step 0.03
If Range("Seuil").Value > 0.76 Then Range("Seuil").Value = -0.15
Range("Seuil").Value = C
For B = -0.15 To 0.76 Step 0.1
If Range("version").Value > 0.76 Then Range("version").Value =
-0.15
Range("version").Value = B
For A = -0.8 To 0.6 Step 0.2
If Range("cumul2").Value > 0.6 Then Range("cumul2").Value = -0.8
Range("cumul2").Value = A
Cells(E + F, D).Select
Range("H2").Copy
Selection.PasteSpecial Paste:=xlPasteValues
E = E + 1
Next A
E = E - 8
D = D + 1
Next B
Next C
Next F
End Sub
Le résultat génère le tableau joint comme exemple, mais répété près d'un millier de fois. Comme chaque résultat est le produit du traitement d'une base de données, cela entraîne un processus lent (un bloc de 8 lignes est généré en à peu près 1'30").
Tout gain de temps, si minime soit-il, est le bienvenu !!🙂
J'ai un souci avec le code ci-dessous : avec 1000 répétitions de la boucle principale ("AM10=1000"), j'en ai approximativement pour 24 heures à faire tourner la machine (Intel Core 2 duo à 2,2 GHz - Windows XP sur MacBook Pro) !! et je dois faire ça sur une vingtaine de feuilles...
A l'expérience, avez-vous une ou des idées pour gagner du temps de traitement ? quelques fractions de seconde par calcul feront au bout quelques heures en moins... 😱
Sub BBD()
Workbooks("ABONNEMENT.xls").Sheets("Calcul").Activate
Dim A As Currency, B As Currency, C As Currency, D As Integer, E As Integer, F As Integer
For F = 0 To 8 * Range("AM10").Value Step 8
Range("T248").End(xlDown).Select
If Range("T248") = Cells(xlCellTypeBlanks) Then E = 248 Else E = 1 +
Selection.Row - 8
D = 20
Cells(E + F, D).Select
Range("Pour").Value = Cells(E + F, D - 3).Value
Range("cumul1").Value = Cells(E + F, D - 2).Value
Range("retard").Value = Cells(E + F, D - 1).Value
A = -0.8
B = -0.15
C = -0.12
For C = -0.12 To 0.15 Step 0.03
If Range("Seuil").Value > 0.76 Then Range("Seuil").Value = -0.15
Range("Seuil").Value = C
For B = -0.15 To 0.76 Step 0.1
If Range("version").Value > 0.76 Then Range("version").Value =
-0.15
Range("version").Value = B
For A = -0.8 To 0.6 Step 0.2
If Range("cumul2").Value > 0.6 Then Range("cumul2").Value = -0.8
Range("cumul2").Value = A
Cells(E + F, D).Select
Range("H2").Copy
Selection.PasteSpecial Paste:=xlPasteValues
E = E + 1
Next A
E = E - 8
D = D + 1
Next B
Next C
Next F
End Sub
Le résultat génère le tableau joint comme exemple, mais répété près d'un millier de fois. Comme chaque résultat est le produit du traitement d'une base de données, cela entraîne un processus lent (un bloc de 8 lignes est généré en à peu près 1'30").
Tout gain de temps, si minime soit-il, est le bienvenu !!🙂