Bonjour à tous,
Afin d'automatiser une feuille excel, j'utilise une macro pour :
- écrire des formules dans des cellules.
- transposé ces formules sur environ 1000 cellules.
- copier cette plage
- copier les valeurs sur cette meme plage.
Voilà mon bout de code:
Mon problèmes est que lorsque je repasse en Calcul Auto, ca bug car ca charge trop.
Est il possible d'accélérer cette procédure?
Afin d'automatiser une feuille excel, j'utilise une macro pour :
- écrire des formules dans des cellules.
- transposé ces formules sur environ 1000 cellules.
- copier cette plage
- copier les valeurs sur cette meme plage.
Voilà mon bout de code:
Code:
//////////////////////////////////////////////////////////////////////
'Calcul Manuel
//////////////////////////////////////////////////////////////////////
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
'//////////////////////////////////////////////////////////////////////
'Les formules
'//////////////////////////////////////////////////////////////////////
Range("L101").Select
Selection.FormulaArray = _
"=SUM(IF((BD_Date>=R42C)*(BD_Date<R42C[1])*(R3C10=BD_Fournisseur)*(BD_ComLiv=""Commande"")*(R[4]C10=BD_Poste),BD_Quantité,""""))"
Range("L102").Select
Selection.FormulaArray = _
"=SUM(IF((BD_Date>=R42C)*(BD_Date<R42C[1])*(R3C10=BD_Fournisseur)*(BD_ComLiv=""Livraison"")*(R[3]C10=BD_Poste),BD_Quantité,""""))"
Range("L103").Select
Selection.FormulaArray = "=R[-2]C-R[-1]C"
Range("L104").Select
Selection.FormulaArray = "=IF(RC[-1]<>RC11,R[-1]C+RC[-1],0)"
Range("L105").Select
Selection.FormulaArray = _
"=IF(MAX(IF((BD_Date>=R42C)*(BD_Date<R42C[1])*(R3C10=BD_Fournisseur)*(BD_ComLiv=""Livraison"")*(RC10=BD_Poste),BD_Date,""""))>0,MAX(IF((BD_Date>=R42C)*(BD_Date<R42C[1])*(R3C10=BD_Fournisseur)*(BD_ComLiv=""Livraison"")*(RC10=BD_Poste),BD_Date,"""")),"""")"
Range("L106").Select
Selection.FormulaArray = _
"=IF(R[-1]C<>"""",MAX(IF((BD_Date=R[-1]C)*(R3C10=BD_Fournisseur)*(BD_ComLiv=""Livraison"")*(R[-1]C10=BD_Poste),BD_Réception,"""")),"""")"
Range("L107").Select
Selection.FormulaArray = "=IF(R[-2]C<>"""",R[-1]C-R[-2]C,"""")"
Range("L108").Select
Selection.FormulaArray = "=IF(R[-3]C<>"""",R[-3]C-R42C,"""")"
'//////////////////////////////////////////////////////////////////////
'Transpose
'//////////////////////////////////////////////////////////////////////
Range("l101:l110").Select
Selection.AutoFill Destination:=Range(Cells(101, 12), Cells(Range("D2"), 12)), Type:=xlFillDefault
Range(Cells(101, 12), Cells(Range("D2"), 12)).Select
Selection.AutoFill Destination:=Range(Cells(101, 12), Cells(Range("D2"), Range("D4"))), Type:=xlFillDefault
'//////////////////////////////////////////////////////////////////////
'Réactivation Calcul Auto
'//////////////////////////////////////////////////////////////////////
With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
'//////////////////////////////////////////////////////////////////////
'Copier/Coller Valeurs
'//////////////////////////////////////////////////////////////////////
Range(Cells(101, 12), Cells(Range("D2"), 12)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Mon problèmes est que lorsque je repasse en Calcul Auto, ca bug car ca charge trop.
Est il possible d'accélérer cette procédure?