Bonjour,
J'aimerais avoir votre avis concernant ce code :
Dans la 1ère boucle do while la variable MON_TOTAL_LIGNE peut atteindre des valeurs de l'ordre de la centaine.
Dans la seconde boucle do while la variable MON_TOTAL_LIGNE_BD peut atteindre des valeurs supérieures à 30 000.
Ce qui fait un total de plus de 3 millions de tests voir beaucoup plus si je compte les deux tests "IF".
Et lorsque j'execute ce code, en effet il dure plus de 7 minutes.
Comment peut-on optimiser ce code . Peut-on ramener l'execution de ce code à des temps beaucoup plus standard de l'ordre de la seconde ou de la minute sans faire appelle à un processeur quadruple corps à particule 🙂))
Merci
mousse
J'aimerais avoir votre avis concernant ce code :
Code:
Sub MAIN()
Dim MON_TOTAL_LIGNE As Integer
Dim MON_TOTAL_LIGNE_BD As Integer
Dim x, y As Integer
Dim Val1, Val2 As Integer
MON_TOTAL_LIGNE = TOTAL_LIGNE("Tableau de bord", 6)
MON_TOTAL_LIGNE_BD = TOTAL_LIGNE("Volume_Mag", 2)
y = 0
x = 0
Do While x < MON_TOTAL_LIGNE
Do While y < MON_TOTAL_LIGNE_BD
If Sheets("Tableau de bord").Cells(x + 6, 1) = Sheets("Volume_Mag").Cells(y + 2, 2) _
And Sheets("Volume_Mag").Cells(y + 2, 4) = 1 Then
Val1 = Val1 + Sheets("Volume_Mag").Cells(y + 2, 6)
End If
If Sheets("Tableau de bord").Cells(x + 6, 1) = Sheets("Volume_Mag").Cells(y + 2, 2) _
And Sheets("Volume_Mag").Cells(y + 2, 4) = 2 Then
Val2 = Val2 + Sheets("Volume_Mag").Cells(y + 2, 6)
End If
y = y + 1
Loop
Sheets("Tableau de bord").Cells(x + 6, 9) = Val1 / Sheets("Tableau de bord").Cells(x + 6, 3)
Sheets("Tableau de bord").Cells(x + 6, 7) = Val2 / Sheets("Tableau de bord").Cells(x + 6, 3)
y = 0
Val1 = 0
Val2 = 0
x = x + 1
Loop
End Sub
Dans la 1ère boucle do while la variable MON_TOTAL_LIGNE peut atteindre des valeurs de l'ordre de la centaine.
Dans la seconde boucle do while la variable MON_TOTAL_LIGNE_BD peut atteindre des valeurs supérieures à 30 000.
Ce qui fait un total de plus de 3 millions de tests voir beaucoup plus si je compte les deux tests "IF".
Et lorsque j'execute ce code, en effet il dure plus de 7 minutes.
Comment peut-on optimiser ce code . Peut-on ramener l'execution de ce code à des temps beaucoup plus standard de l'ordre de la seconde ou de la minute sans faire appelle à un processeur quadruple corps à particule 🙂))
Merci
mousse