Calcul trop lent

Bonjour,

J'ai un problème avec le calcul de mon tableur Excel, il est trop lent.

J'ai un onglet qui s'appelle Planif et j'ai mis un bouton (Insérer produit) pour insérer un bloc pour un nouveau produit et arrêter par macro le calcul automatique et j'ai mis autre bouton (Calcul automatique) pour calculer ma feuille à nouveau.

J'ai un onglet qui s'appelle Vente-Data qui contient environ 65 000 milles lignes de données et d'autres données vont venir s'ajouter. J'ai dû enlever des lignes jusqu'à 17 500 pour pouvoir l'expédier.

9planification.zip (636.50 Ko)

Alors comment faire pour avoir un calcul rapide de mon tableur?

Merci,

Oiseau bleu

Bonjour Oiseaubleu,

Pour avoir un calcul plus rapide

1) il faut changer le code en évitant les "Select"

Sub Inserer_Lignes_Produit()
    Dim ligne As Long

    ligne = Application.InputBox("Entrez le numéro de la ligne où sera insérée le calcul", "Copier les lignes de calcul de la nouvelle bière", Type:=1)

    If IsNumeric(ligne) And ligne > 8 Then
      Application.Calculation = xlCalculationManual
      Planif.EnableCalculation = False
      Range("Planif_ligne_Info").Copy
      Rows(ligne & ":" & ligne).Insert Shift:=xlDown
      Application.Calculation = xlCalculationAutomatic
    End If

End Sub

2) Changer de PC, chez moi cela ne prends pas énormément de temps

3) Réduire le nombre de lignes de Vente-DATA

4) Utilisez des formules sur des plages réduites plutôt que des colonnes entières, en utilisant un tableau structuré par exemple
ce qui remplacera, Exemple N8, votre formule

=SIERREUR(SOMME.SI.ENS('Vente-DATA'!$O:$O;'Vente-DATA'!$E:$E;Planif!$B8;'Vente-DATA'!$A:$A;"<="&Planif!N$5;'Vente-DATA'!$A:$A;">="&FIN.MOIS(Planif!N$5;-1)+1)/$D8;0)

Par

=SIERREUR(SOMME.SI.ENS(Tableau1[BLITRAGE];Tableau1[CDESC1];$B8;Tableau1[Date de transfert];"<="&N$5;Tableau1[Date de transfert];">="&FIN.MOIS(N$5;-1)+1)/$D8;0)

Reste à voir après toutes ces modifications

@+

Bonjour,

Je crois qu'avec le tableau cela a augmenté la rapidité de calcul mais cela demeure qu'en même lent.

Pour le tableau doit-on écrire manuellement la formule qui est en N8 ou si je pointe la colonne O cela va me donner Tableau1[BLITRAGE] Comment faire pour que cela s'inscrive sans que j'ai a récrire le tout?

Le nombre de lignes va aller en augmentant...

Y a-t-il une solution pour augmenter encore plus la rapidité?

Merci,

Oiseau bleu

Bonjour à tous,

2 suggestions :

- si tes calculs pour 2019 et 2020 sont finalisés, remplace par un copier-coller valeur.
Inutile de les recalculer à chaque ouverture.

- pour les autres tu pourrais te faire des TCD qui vont pré-mâcher les calculs très rapidement. S'appuyer sur ses résultats pour alimenter en partie ton planning. Encore un paquet de matricielles qui partent si c'est faisable.
eric

Bonjour,

J'aimerais que tu me donnes des exemples avec TCD ou calcul matriciel pour que je puisse comprendre davantage.

Et pour les tableaux doit-on écrire manuellement la formule qui est en N8 ou si je pointe la colonne O cela va me donner Tableau1[BLITRAGE] Comment faire pour que cela s'inscrive sans que j'ai a récrire le tout?

Merci,

Oiseau bleu

Juste un exemple pour le principe.
Ton classeur n'est pas facile à appréhender...
Tu cherches CAN-1 alors que c'est CAN1 dans les données, il y a des #REF! un peu partout, tes macros mettent le brin et virent le résultat des formules.

Bref, j'ai mis en xlsx pour ne plus être embêté et fais un calcul un peu au hasard pour te montrer.
En P8:P12 je t'ai mis des formules pour récupérer des éléments du TCD (à toi de voir les regroupements exacts dont tu as besoin).
Pour avoir la syntaxe de LIREDONNEESTABCROISDYNAMIQUE() le plus simple est de mettre "=" et d'aller cliquer la valeur qui t'intéresse dans le TCD.
Ensuite il faut remplacer les valeurs en dur par celles variables.
Ex : remplacer "2021" par ANNEE($F$2)

Ta macro se limitera au rafraichissement des TCD (sur demande ou bien en quittant Vente-DATA après un maj).
Pour actualiser un TCD précis Sheets("TCD").PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Pour tous les actualiser ThisWorkbook.RefreshAll
eric
PS : j'ai aussi enlevé des lignes

11planification.zip (850.63 Ko)

Bonjour,

Je tiens à vous remercier beaucoup. Cela fonctionne parfaitement et cela est très rapide.

Félicitations à vous,

Oiseau bleu

Rechercher des sujets similaires à "calcul trop lent"