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
Bonjour,

Réalisant un projet sur excel je suis dérangé par le temps d'exécutions des calculs

Le fichier est volumineux, Des calcules en cascades, RecherchEV, formuleComplex

( + de 50 000 lignes / 100 colonnes ) plusieurs feuilles

Si j'entre une formule basique " =1+1 " il faut 1 min pour le calculer
pour certaines duplications il me faut 20/30mins d'attentes pour obtenir mon résultat.

Pourtant excel n'utilises que 5% du processeurs ( j'ai bien coché d'utiliser tous les processeurs )

Pas d'utilisation excessives des autres composants

Configuration :

I7 10700k
32 Go de ram
Disque dur : NVME

J'ai également testé de prendre une feuille de calcul ( copier/coller ) les formules sur un nouveau fichier excel, même chose et toujours une faible utilisation des composants du pc et une lenteur de calcul

Est-ce que vous auriez une solution pour que " excel "utilise les composants de l'ordinateur à pleine puissance ce qui permettrait d'aller au moins 10 fois plus rapidement

L'impression d'être bridé sur excel ( par excel / windows ou autre )
A voir également:

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
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
1
Anonyme4755 Messages postés 9 Date d'inscription mercredi 8 septembre 2021 Statut Membre Dernière intervention 22 septembre 2021
9 sept. 2021 à 11:58
Bonjour,

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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249 > Anonyme4755 Messages postés 9 Date d'inscription mercredi 8 septembre 2021 Statut Membre Dernière intervention 22 septembre 2021
9 sept. 2021 à 13:01
Bonjour,

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
0