Calculs lent, long
Fermé
Anonyme4755
Messages postés
9
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
22 septembre 2021
-
8 sept. 2021 à 16:15
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 22 sept. 2021 à 23:23
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 22 sept. 2021 à 23:23
A voir également:
- Excel lent calcul processeur
- Pc lent - Guide
- Calcul moyenne excel - Guide
- Temperature processeur - Guide
- Liste déroulante excel - Guide
- Vitesse processeur - Guide
9 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
9 sept. 2021 à 00:22
9 sept. 2021 à 00:22
Bonjour,
Indirect() est volatile, c'est à dire recalculé à chaque recalcul de la feuille (une simple validation de cellule relance un calcul).
A raison de 4 par formule, sur 50000 lignes, sur x colonnes, imagine le boulot que tu lui donnes.
Je n'ai pas l'impression, mais si INDIRECT(CONCATENER(Y30;AB30) par exemple est utilisé avec les mêmes ref à plusieurs endroits, il faut ressortir cette expression dans une cellule dédiée que tu utilises dans ta formule. Dans la cellule elle sera calculée une seule fois pour être réutilisée plusieurs fois. A faire pour chaque expression réutilisée des milliers de fois.
Idem pour Aujourdhui() et Maintenant(). Si utilisées sur de nombreuses lignes, ressortir dans une cellule dédiée.
Les MFC également sont volatiles. A virer si tu en as beaucoup.
Les fonctions matricielles qui s'adressent à de grandes plages sont aussi très gourmandes.
GRANDE.VALEUR() travaille sur une petite liste, mais si tu as des Sommeprod() sur de grandes plages c'est très chronophage. Utiliser des plages nommées dynamiques réduites à l'essentiel, jamais sur des colonne entières. Mais sur 50000 lignes ça restera difficile.
eric
Indirect() est volatile, c'est à dire recalculé à chaque recalcul de la feuille (une simple validation de cellule relance un calcul).
A raison de 4 par formule, sur 50000 lignes, sur x colonnes, imagine le boulot que tu lui donnes.
Je n'ai pas l'impression, mais si INDIRECT(CONCATENER(Y30;AB30) par exemple est utilisé avec les mêmes ref à plusieurs endroits, il faut ressortir cette expression dans une cellule dédiée que tu utilises dans ta formule. Dans la cellule elle sera calculée une seule fois pour être réutilisée plusieurs fois. A faire pour chaque expression réutilisée des milliers de fois.
Idem pour Aujourdhui() et Maintenant(). Si utilisées sur de nombreuses lignes, ressortir dans une cellule dédiée.
Les MFC également sont volatiles. A virer si tu en as beaucoup.
Les fonctions matricielles qui s'adressent à de grandes plages sont aussi très gourmandes.
GRANDE.VALEUR() travaille sur une petite liste, mais si tu as des Sommeprod() sur de grandes plages c'est très chronophage. Utiliser des plages nommées dynamiques réduites à l'essentiel, jamais sur des colonne entières. Mais sur 50000 lignes ça restera difficile.
eric
9 sept. 2021 à 11:58
D'accord donc excel fonctionne correctement, dommage qu'excel n'exploite pas plus les capacités de l'ordinateur
Ne pouvant pas vraiment me séparer des formules je peux essayer autre chose ...
D'une feuille excel à l'autre je n'ai plus besoin des formules mais uniquement des données, voir même sur une seule feuille.
Je pourrais donc copier mes valeurs par feuille ou zone dans une feuille sur un nouveau fichier excel
Je pense que c'est plus optimale d'avoir les données sur le même fichier car faire des recherches dans un autre fichier doit être trop gourmant
Peut être que c'est le seul moyen de réduire les formules pour arriver à la même finalité
1 Fichier pour réaliser un process, récupérer le résultat pour continuer
Merci pour les réponses
9 sept. 2021 à 13:01
une solution est de garder la 1ère ligne avec les formules, et de faire un copié-collé valeur sur les autres.
En cas de maj tes formules sont présentent pour une recopie et tu retrouves de la réactivité le reste du temps.
Reste à informer les utilisateurs.
Avec un exemple anonymisé de ton fichier de 10 lignes on pourrait faire une macro qui ferait ces opérations.
eric