Bonjour à tous,
J'ouvre une deuxième discussion car mon problème est à présent différent.

J'ai testé avec le code ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
Sub Super_toto()
Dim PS_J1 As Range ', PS_J2 As Range, PS_J3 As Range, PS_J4 As Range, PS_J5 As Range, PS_J6 As Range, PS_J7 As Range
Dim PlageDest As Range
 
    With ThisWorkbook
         Set PS_J1 = .Worksheets("J1").Cells(2, 1).Resize(.Worksheets("J1").Cells(.Worksheets("J1").Rows.Count, 1).End(xlUp).Row - 1, 1)
         Set PlageDest = .Worksheets("Articles").Cells(2, 3).Resize(.Worksheets("Articles").Cells(.Worksheets("Articles").Rows.Count, 2).End(xlUp).Row - 1, 1)
    End With
 
    With PlageDest     
'=SOMMEPROD(('J1'!$A$2:$A$35000=Articles!B2)*('J1'!$C$2:$C$35000=Articles!$C$1)*'J1'!$D$2:$D$35000)
       .Formula = "=SUMPRODUCT((J1!" & PS_J1.Address(True, True) & "=B2)*('J1'!" & PS_J1.Offset(0, 2).Address(True, True) & "=$C$1)*(J1!" & PS_J1.Offset(0, 3).Address(True, True) & "))"
       .Value = .Value
       End With
 
    With PlageDest.Offset(0, 1)
            '=SOMMEPROD(('J1'!$A$2:$A$35000=Articles!B2)*'J1'!$D$2:$D$35000)
            .Formula = "=SUMPRODUCT((J1!" & PS_J1.Address(True, True) & "=B2)*(J1!" & PS_J1.Offset(0, 3).Address(True, True) & "))"
           .Value = .Value
    End With
 
    MsgBox "Calculs Terminés"
 
End Sub
Bon très honnêtement, je ne dois pas avoir un cheval de course car pour moi ça prend 5min ^^
D'ailleurs, je ne comprend pas pourquoi mes 4 processeurs chargent 2 fois de 0 à 100% :-/
De plus, j'ai testé avec deux boucles "With" séparées l'une de l’autre comme ci-dessus et deux boucles imbriquées l'une dans l'autre, et je ne remarque pas de différence au niveau du temps de calcul. Pensez-vous que c'est normal ?

Est-ce que vous auriez une astuce pour accélérer les calculs ?

a) En effet, pour le moment, je fais mon calcul avec la feuille "J1", mais je dois faire la même chose de J1 à J7. Cela risque donc de prendre 7 fois plus de temps donc au moins 5min x 7

b) De plus, mes formules =SUMPROD(J1 BLABLA), vont devenir =SUMPROD(J1 BLABLA) + SUMPROD(J2 BLABLA) + ... + SUMPROD(J7 BLABLA)

c) Est-ce qu'il est préférable de faire des opérations dans des feuilles séparées ou grouper toutes les données sur une seul feuille ?

Merci par avance pour votre aide :-)