XL 2016 [RESOLU] Optimisation code étirer formule

roybaf

XLDnaute Occasionnel
Bonjour à tous,

J'ai un code qui me permet d'étirer mes formules jusqu'à la dernier ligne mais il ralenti extrêmement l’exécution de la macro :
Code:
Dim lastrow&
    lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Range("J2").Select
    ActiveCell.FormulaR1C1 = "=LEFT(RC1,2)"
    ActiveCell.Offset(0, 1).FormulaR1C1 = "=LEFT(RC1,3)"
    ActiveCell.Offset(0, 2).FormulaR1C1 = "=LEFT(RC1,4)"
    ActiveCell.Offset(0, 3).FormulaR1C1 = "=LEFT(RC1,5)"
    ActiveCell.Offset(0, 4).FormulaR1C1 = _
        "=IF(OR(LEFT(RC[-13],1)=""5"",LEFT(RC[-13],1)=""6""),RC[-10]-RC[-9],RC[-9]-RC[-10])"
'
'
'
    Range("J2:N2").Select
     Selection.AutoFill Destination:=Range("j2:n" & lastrow)

30 secondes d’exécution je n'ai que 6000 lignes, sachant que mon total de lignes peut atteindre 1 000 000

Quelqu'un aurait-il une solution?

Merci d'avance.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour roybaf,

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim lastrow&
lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Range("J2").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC1,2)"
ActiveCell.Offset(0, 1).FormulaR1C1 = "=LEFT(RC1,3)"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=LEFT(RC1,4)"
ActiveCell.Offset(0, 3).FormulaR1C1 = "=LEFT(RC1,5)"
ActiveCell.Offset(0, 4).FormulaR1C1 = _
"=IF(OR(LEFT(RC[-13],1)=""5"",LEFT(RC[-13],1)=""6""),RC[-10]-RC[-9],RC[-9]-RC[-10])"
'
'
'
Range("J2:N2").Select
Selection.AutoFill Destination:=Range("j2:n" & lastrow)
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

à+
Philippe
 

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94