Excel ralenti par de "gros" fichiers - Optimiser la mémoire ? (2007)

Charly88

XLDnaute Occasionnel
Bonsoir à tous,

Version courte :
en 2012 avec un excel 2007 et 4GO de Ram actuellement utilisés pour 800 Mo max dont 100 pour Excel, y'a-t-il moyen de régler Excel pour lui dire de prendre ses aises sur la Ram et obtenir une accélération générale ?
(Windows serveur inconnu au moment où j'écris)

Je sais que j'ai de multiples possibilités d'améliorations "classiques" à mettre en oeuvre, mais le problème que je pose n'est pas celui du code mais d'Excel. Le simple fait que d'autres fichiers de 5 Mo ou plus soient ouverts le ralentit globalement, même si les dits fichiers ne sont pas sollicités. Peut-on contourner cet handicap inattendu en lui lâchant la bride sur la RAM ?




Quelques infos sur le contexte:
Je suis dans une (courte) phase d'optimisation d'une appli vba développée depuis quelques mois. Cette appli est constituée d'un fichier "moteur" .xlsm et de .xlsx de stockage (je ne dis pas "base de données" volontairement). Le moteur modifie les données, calcule, les renvoie, sauve. Ces opérations sont faîtes en vba à 80-90%, j'ai quelques formules, des liens entre fichiers moteur et stockage et de multiples étapes de transfert de données vers/depuis les feuilles et même des classements de feuilles.

Seulement tout ceci ne sont que des détails, le problème de fond c'est que à partir du moment où j'ai travaillé non plus avec un fichier de stockage de 5 Mo mais 3 fichiers ou plus de 2 ; 5 et 8 Mo pour le plus gros, tous mes calculs se sont globalement ralentis.
J'ai testé exactement les mêmes opérations avec et sans différents fichiers de stockage ouverts ou fermés (et de toutes façons inutilisés pour ces opérations) et le timer indiquent une vitesse divisée par 2;3 ou pire. Comme si un concurrent ouvrait un entrepôt en face de ma boîte et que mes gars travaillaient soudainement au ralenti en regardant sans arrêt ce qu'il se passe en face... alors qu'on ne voit qu'un mur gris sans intérêt, même pas une pin-up.

Quelqu'un avec une boîte à outil ?
 
Dernière édition:

joss56

XLDnaute Accro
Re : Optimiser l'utilisation de la mémoire par Excel ? (2007)

Bonjour,

Je ne sais pas comment optimiser la RAM avec Excel, mais j'aurai tendance à préconiser un autre système de stockage: utiliser PALO qui te permettrait de regrouper tes données dans une base de données stockée sur un serveur et accessible en réseau (LAN et distant!) via des interfaces Excel avec des temps de traitement vraiment intéressant.

A+
Jocelyn
 

Misange

XLDnaute Barbatruc
Re : Optimiser l'utilisation de la mémoire par Excel ? (2007)

Bonjour

Le problème n'est pas tant la taille de la mémoire que tu alloues à excel que l'encombrement de cette mémoire au fil des opérations effectuées, excel ayant tendance à ne pas la vider. Il y a eu d'innombrables discussions sur ce sujet sur les forums et il n'y a pas de solution miracle hélas pour libérer cette mémoire, mais des tas de petits conseils à suivre (fais une recherche sur google tu comprendras vite !).Il faut optimiser au max le code. Il faut aussi se souvenir que les graphiques dans excel consomment énormément de ressources. Un classeur très léger mais avec beaucoup de graphiques peut mettre l'application à genoux alors qu'un classeur sans graphique plus lourd passerait très bien.
 

Charly88

XLDnaute Occasionnel
Re : Optimiser l'utilisation de la mémoire par Excel ? (2007)

> Joss, oui la Bdd, sous une forme ou une autre, ce sera une étape tôt ou tard.

> Misange, 0 graphique, pas de MFC...
Lors que tu parles de "l'encombrement de cette mémoire au fil des opérations effectuées", tu penses aux opérations sur la vie entière du fichier ? J'ai déjà lu une histoire de Temp à supprimer, je vais m'en occuper mais je pense que cela traite un autre problème (mes gars auraient du mal à bosser parce qu'ils laissent trainer les emballages au fil des livraisons pour reprendre mon exemple) et dans mon cas, les fichiers sont trop récents
Ici, ce sont des opérations ralenties dès les premiers essais du fait de la présence de fichiers lourds ouverts et sans autre opération préalable.

Edit : je modifie le titre pour plus cibler la vitesse. La mémoire vive n'est peut-être pas l'explication.
 
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Excel ralenti par de "gros" fichiers - Optimiser la mémoire ? (2007)

Bonjour
Non pas sur la vie entière du fichier mais sur sa vie depuis l'ouverture et l'occupation en mémoire vive.
Il faut commencer par cerner ce qui prend vraiment du temps dans ton truc. Technique de la mayonnaise ratée : tu remets un jaune d'oeuf et tu réincorpores petit à petit la mayo trop liquide. Ici tu repars d'un fichier puis tu autorises petit à petit les liaisons vers les autres fichiers. teste tes formules aussi. sur 2007 il est impératif de ne jamais faire de calcul sur des colonnes entières, il faut définir des noms dynamiques et ne travailler que sur les plages utiles. C'est encore plus important si tu as des sommeprod ou des formules matricielles classiques.
Mais des classeurs de 2 5 et 8 MO ça n'a rien de monstrueux, à mon avis le pb vient de formules. Tout est sur le même PC ?
 

MJ13

XLDnaute Barbatruc
Re : Excel ralenti par de "gros" fichiers - Optimiser la mémoire ? (2007)

Bonjour à tous

Sur excel, comme dit précédemment, de nombreuses manières de travailler peuvent ralentir Excel :(.

J'ai été confronté à un problème avec beaucoup de liens hypertextes ou de MEFC dans une feuille faisait ralentir son ouverture ou rendait le fichier inutilisable. Attention aussi si les plages sont filtrées, les formules matricielles ou compliquées....

> Joss, oui la Bdd, sous une forme ou une autre, ce sera une étape tôt ou tard.

Le plus tôt sera le mieux :).
 

Misange

XLDnaute Barbatruc
Re : Excel ralenti par de "gros" fichiers - Optimiser la mémoire ? (2007)

Petit complément :
LE truc qui accélère et de loin le plus c'est de mettre le mode de calcul de auto à manuel en début de macro et de le réactiver à la fin.
Si tu importes par exemple des données d'un fichier dans un classeur excel ligne par ligne et que ces lignes activent des formules (surtout des matricielles...), à chaque importation d'une donnée tu recalcules ta feuille entière. Ca devient vite longuet !
deux solutions : celle ndiquée plus haut ou, encore plus efficace et rapide, gérer cela dans des arrays et transférer en un seul coup toutes les données d'un array vers la feuille.
J'ai un très gros classeur avec des tas et des tas de données sur lequel je bosse depuis 5 ans. Dans ce classeur j'importe régulièrement de nouvelles données. Au bout de quelques mois (années) il était devenu ingérable jusqu'à ce que je me décide de reprendre tout le code et à transformer tout ça correctement avec des arrays. Ce qui mettait (même avec le mode de calcul sur manuel) des cafés entiers à s'importer est maintenant quasi instantané.
8 pages sur le sujet et des exemples à télécharger ici
Ce lien n'existe plus (et pages suivantes)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali