Accélérer une SOMMEPROD // VBA

zourite

XLDnaute Junior
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:


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?
 

zourite

XLDnaute Junior
Re : Accélérer une SOMMEPROD // VBA

Salut,

Euréka ! je te remercie !

Je passe par un TDC du coup qui couplé a un petit VBA & formule fera l'affaire.


EDIT: J'ai recrée un poste sur le TDC car ce na correspondait plus au topic ici
 
Dernière édition:

Discussions similaires

Réponses
0
Affichages
175
Réponses
3
Affichages
600

Statistiques des forums

Discussions
312 427
Messages
2 088 311
Membres
103 813
dernier inscrit
mehdifr