Accélérer une SOMMEPROD // VBA

  • Initiateur de la discussion Initiateur de la discussion zourite
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

zourite

Guest
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?
 
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 modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
910
Réponses
2
Affichages
770
Réponses
5
Affichages
688
Réponses
2
Affichages
504
Réponses
0
Affichages
657
Retour