Simplification de code ?

Int0x

XLDnaute Occasionnel
Bonjour le forum,

Je suis en train de finaliser un fichier et je cherche à optimiser le temps de traitement.
Le code ci-dessous fonctionne parfaitement mais est assez long à traiter (6-7 secondes).
Voyez-vous une autre formulation pour simplifier l'ensemble ?

Par avance merci,
I.

If Sheets("01").Range("A2").Value <> "" Then Range("C2:C" & Range("A65000").End(xlUp).Row).FormulaR1C1 = "=+SUMPRODUCT(('01'!R2C3:R65000C3=""I""&Fiche!R2C3)*('01'!R2C1:R65000C1=RC[-2])*('01'!R2C4:R65000C4))"
Label3.Width = 1 / 12 * 222
DoEvents

If Sheets("02").Range("A2").Value <> "" Then Range("D2:D" & Range("A65000").End(xlUp).Row).FormulaR1C1 = "=+SUMPRODUCT(('02'!R2C3:R65000C3=""I""&Fiche!R2C3)*('02'!R2C1:R65000C1=RC[-3])*('02'!R2C4:R65000C4))"
Label3.Width = 2 / 12 * 222
DoEvents

If Sheets("03").Range("A2").Value <> "" Then Range("E2:E" & Range("A65000").End(xlUp).Row).FormulaR1C1 = "=+SUMPRODUCT(('03'!R2C3:R65000C3=""I""&Fiche!R2C3)*('03'!R2C1:R65000C1=RC[-4])*('03'!R2C4:R65000C4))"
Label3.Width = 3 / 12 * 222
DoEvents

etc...jusqu'à l'onglet 12
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Simplification de code ?

Bonjour Int0x,

mettre ceci en début de procédure:
Application.Calculation = xlCalculationManual

et ceci en fin de procédure
Application.Calculation = xlCalculationAutomatic

remarque perso: est-il absolument nécessaire que la formule tienne compte de 65000 lignes

à+
Philippe
 

Int0x

XLDnaute Occasionnel
Re : Simplification de code ?

Bonjour phlaurent55,

Tout d'abord merci pour ta réponse, je m'empresse d'ajouter ce bout de code.
Autrement, il n'est bien entendu pas nécessaire que la formule tienne compte de 65000 lignes. Malheureusement je ne sais pas intégrer la notion de dernière ligne dans les formules R1C1 :(

Saurais-tu m'aider sur ce point ?

Par avance merci,
Int0x
 

Discussions similaires