Microsoft 365 Classeur trop lent sans raison apparente

eric72

XLDnaute Accro
Bonjour,
je rencontre un souci avec le fichier ci-joint, chaque saisie demande un temps de réaction anormalement long et je ne trouve pas pourquoi, j'ai tenté de retirer les MEFC sans succès. Quelqu'un a t il une idée pour régler ce problème.
Merci d'avance pour votre dévouement.
Eric
 

Pièces jointes

  • fichier trop lent sans raison .xlsm
    572.1 KB · Affichages: 13

Dranreb

XLDnaute Barbatruc
Bonsoir.
Vous auriez probablement intérêt à remplacer les SOMME.SI.ENS par des formule plus simples et moins gourmandes, genre, pour les lignes 8 et 9 :
=SOMME(DECALER(TblBudget[@[C.A prévu]];0;0;7;1))
=SOMME(DECALER(TblBudget[@[C.A N-1]];0;0;7;1))
=O9-M8
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

en supprimant toutes les MFC c'est bon.

Par ailleurs quand on utilise un Tableau, pas la peine de créer des lignes en avance, elles se créent toutes seule au début d'une saisie.
Là tu vas jusqu'en 2035 avec 5800 lignes !
Copie sans les MFC en PJ

Bernard, tu es sûr de ton coup ?
Decaler() est volatile, je ne suis pas sûr du tout que SOMME.SI.ENS le soit (?)
eric
 

Pièces jointes

  • fichier trop lent sans raison .xlsm
    566.2 KB · Affichages: 4

eric72

XLDnaute Accro
Bonjour,
merci pour vos réponses.
Concernant Les MEFC j'en ai besoin pour connaitre à l'avance les congés scolaires et les jours fériés donc difficile de les retirer.
Pour ce qui est du nombre de lignes le problème c'est que pour alimenter la colonne C.A N-1 il faudrait un code vba (pour le reste aussi d'ailleurs) et là ça se complique pour moi!!!
eric
 

eriiic

XLDnaute Barbatruc
Si si, Decaler() est bien volatile.
Tu remplaces donc une fonction (pas mal optimisée ma foi) sur 5000 lignes par 500 formules de 2 fonctions sur 10 lignes.
Combien même ça serait plus rapide (à prouver), l'ensemble de tes formules seraient ré-évaluées à chaque action n'importe où sur la feuille, y compris les filtres.
Le nb.si.ensemble() ne le sera que sur modif des antécédents.
D'où mon scepticisme.
 

Dranreb

XLDnaute Barbatruc
Le nb.si.ensemble() ne le sera que sur modif des antécédents.
Oui mais pas que sur les antécédents concernés mais sur tous ceux possibles.
Difficile de savoir si DECALER est réellement volatile. Ou alors bien d'autre le sont aussi. Ça m'est plusieurs fois arrivé de voir qu'une feuille était entièrement recalculée simplement en effaçant une cellule qui n'était antécédente de rien.
A mon avis DECALER n'est certainement pas spécialement volatile, et une doc qui dit le contraire dit simplement une monumentale connerie.
Il n'y a pas davantage de raison qu'elle le soit que INDEX, puisque c'est pratiquement la même à quelque détails près, et je ne vois pas ce que l'utilisation des 2 dernier paramètre de redimensionnement y changerait, surtout s'ils sont fixes en plus.
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Cependant Microsoft est affirmatif. Decaler() l'est au même titre que Indirect() dont elle est très proche.
J'ai tendance à les croire là-dessus.
Je suppose que c'est dû à sa ré-évaluation nécessaire suite à une insertion de colonne par exemple, sans qu'aucun antécédent dans l'arbre des dépendance n'ait changé pour pouvoir la déclencher.

:
Fonctions volatiles
Une fonction volatile est toujours recalculée à chaque calcul, même s’il semble qu’aucun de ses antécédents n’ait changé. L’utilisation de nombreuses fonctions volatiles ralentit chaque recalcul mais n’a aucun impact sur les calculs complets. Vous pouvez déterminer une fonction définie par l’utilisateur en tant que volatile en incluant Application.Volatile dans le code de fonction.

Certaines des fonctions intégrées dans Excel sont évidemment volatiles :RAND(), NOW(), TODAY(). D’autres ne sont pas aussi visiblement volatiles : OFFSET(), CELL(), INDIRECT(), INFO().

Certaines fonctions ont été préalablement documentées comme volatiles, mais en fait ne le sont pas : INDEX(), ROWS(), COLUMNS(), AREAS().
Dommage qu'ils aient oublié de lister les MFC ici.
Dans ce doc, juste en dessous, tu as un autre passage intéressant : les actions volatiles (comme un simple clic sur un séparateur de colonne, je me demande encore pourquoi :rolleyes: )
eric
 

eriiic

XLDnaute Barbatruc
Bonjour,

tes mises en forme par macro.
J'ai trouvé ton système de lister tous les jours de congés un peu fastidieux.
J'ai remplacé par une plage où tu saisis début et fin.
Seulement on passe de 9s à 30s. Je pense qu'en soit ce n'est pas trop gênant car ce n'est lancé qu'une fois à chaque modif de Données.
Dans le doute j'ai laissé la 1ère solution en commentaire dans le code. Choisis l'une ou l'autre selon ce que tu désires privilégier.
eric
 

Pièces jointes

  • fichier trop lent sans raison 1.1.xlsm
    584 KB · Affichages: 2

Discussions similaires

Réponses
17
Affichages
652

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16