Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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,

Sommeprod ca consomme beaucoup de mémoire !!!
Ne peux tu pas régler ce probleme autrement (TCD ou macro).
Fais nous parvenir un petit exemple de ce que tu cherches à calculer.

Cordialement
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…