Comment réduire le poids d'un fichier Excel?

Bonjour,

Mon fichier .xlsm (XL 2007) contient 100 feuillets.

Certains feuillets ont un contenu très sommaire.

Quelques feuillets ont un contenu très complexe : par exemple, le + gros feuillet contient 230.000 cellules contenant des formules plus ou moins complexes.

Mon fichier contient bon nombre de macros, mais je ne crois pas que cela pèse.

Mon objectif est d'optimiser la vitesse de fonctionnement des macros, ce qui me semble être passer par l'allégement du poids du fichier.

Je veux alléger au maximum le poids de mon fichier pour accélérer le fonctionnement des macros (actuellement, je suis contraint de fonctionner sous mode "calcul sur demande F9", sinon ça rame trop).

J'ai opéré une cure d'amaigrissement pour réduire la taille de mon fichier :

  • suppression des cellules lignes et colonnes vides (gain important)
  • raccourcissement des noms des feuillets (compte tenu du très grand nombre de formules cross-feuillets, ça m'a presque fait gagner 2MO !)
  • création d'un nouveau fichier excel et copie de tous les feuillets vers le nouveau fichier excel, ce qui n'a absolument rien fait gagner.

Actuellement, mon fichier .xlsm pèse 43 MO.

Mes questions :

1. Y a-t-il d'autres moyens que ceux énumérés ci-dessus pour alléger un fichier excel?

2. J'ai notamment lu que supprimer les mises en forme graphiques (bordure, couleurs, etc...) pouvait être utile, mais les premiers tests que j'ai réalisés sur certains feuillets ont contredit cette thèse. Quelqu'un en sait-il +?

3. J'observe qu'en changeant de format de fichier et en passant en .xlsb (fichier binaire), le poids du fichier passe à 30 MO, mais je ne sais pas si les performances des macros seront accrues, et je ne connais pas les implications de ce changement de format.

4. à part cela à quoi pensez-vous pour accélérer des macros?

Voili voilou, je crois que j'ai donnée toutes les indications nécessaires, mais si vous avez des questions, n'hésitez-pas.

Merci

Nicole

PS : je n'ai pas de macro matricielle dans mon fichier.

Bonjour,

L'enregistrement en xlsb est une bonne idée.

Pour accélérer les temps d'exécution de tes procédures, tu peux si ce n'est pas fait, utiliser l'exemple ci-dessous :

Public Sub DEMO()
Dim modeCalc As XlCalculation

    With Application
        modeCalc = .Calculation
        .Calculation = xlCalculationManual
        '.EnableEvents = False
        .ScreenUpdating = False
    End With

    ' ton code
    '
    '

    With Application
        .Calculation = modeCalc
        '.EnableEvents = True
    End With

End Sub

Sinon, tu dois penser à déclarer tes variables, travailler avec des plages, ne pas utiliser "Select", etc...

J'ai inhibé "EnableEvents", car il doit utiliser si tes procédures ne comportent pas de bugs.

Cdlt.

Bonjour j'ai une question de m...Le temps de traitement du fichier est à combien et vous devez l'amener à combien ? Parce qu'avant de se lancer dans le grand ménage peut-être qu'il faut se demander...Est-ce réellement utile !? J'entends par là...Que si vous reussissez à grapiller au pire une minute de traitement...Durant la minute que vous avez gagné avec un fichier allégé, des macros super bien huilées performante et tout et tout...Ben cette minute là je dirai est inséccable car vous n'avez pas le temps d'y faire grand chose ! Donc si c'est pour passer de 2 minute 30 de traitement du fichier à 1 minute...Ca vaut même pas le coup de se...casser le bas du dos

Jean-Eric a écrit :

Bonjour,

L'enregistrement en xlsb est une bonne idée.

Bonjour Jean Eric, en xlsb, le fichier est plus léger, mais sais-tu s'il y a des aspects négatifs? Et sais-tu si cela est positif sur de la vitesse d'éxécution de macros?

Merci pour tes conseils, je vais tester .EnableEvents = False et .ScreenUpdating = False

Jean-Eric a écrit :

tu dois penser à déclarer tes variables, travailler avec des plages, ne pas utiliser "Select".

Ces 3 points font gagner du temps d'éxécution de la macro?

Force rouge a écrit :

Bonjour j'ai une question de m...Le temps de traitement du fichier est à combien et vous devez l'amener à combien ? Parce qu'avant de se lancer dans le grand ménage peut-être qu'il faut se demander...Est-ce réellement utile !? J'entends par là...Que si vous reussissez à grapiller au pire une minute de traitement...Durant la minute que vous avez gagné avec un fichier allégé, des macros super bien huilées performante et tout et tout...Ben cette minute là je dirai est inséccable car vous n'avez pas le temps d'y faire grand chose ! Donc si c'est pour passer de 2 minute 30 de traitement du fichier à 1 minute...Ca vaut même pas le coup de se...casser le bas du dos

Bonjour Force rouge,

Le temps d'éxécution des macros n'est que de quelques secondes, mais c'est trop pour un fichier qui doit être utiliser de manière fluide.

J'essaye ici de gagner quelques secondes voire dixièmes de secondes à l'utilisation de macros très simples dont le contenu gère seulement :

  • des copier coller
  • l'affectation de contenu à une ou plusieurs cellules
  • l'ouverture d'un feuillet, etc...

Si MFC = mise en forme conditionnelle, je n'ai que quelques cellules en MFC, donc cela ne devrait pas être un souci.

En revanche, j'ai lu dans quelques threads que supprimer les mises en forme graphiques (bordure, couleurs, etc...) pouvait être utile pour alléger un fichier, mais les premiers tests que j'ai réalisés sur certains feuillets ont contredit cette thèse. Quelqu'un en sait-il +?

Bonjour,

en xlsb, le fichier est plus léger, mais sais-tu s'il y a des aspects négatifs?

non

Et sais-tu si cela est positif sur de la vitesse d'éxécution de macros?

Peut-être un peu, mais c'est sur la conception de la macro que tu auras les plus gros gains.

tu dois penser à déclarer tes variables, travailler avec des plages, ne pas utiliser "Select".

Ces 3 points font gagner du temps d'éxécution de la macro?

énormément

- des copier coller

- l'affectation de contenu à une ou plusieurs cellules

Il faut absolument éviter de travailler cellule par cellule et le faire en mémoire.

Il faut charger une plage dans une variable tableau en une fois, le triturer et compléter un tableau resultat que tu colleras en une fois (ou qq unes selon les nécessités).

eric

Bonjour

peut etre aussi avant de se lancer sur la refonte des macros peut etre vérifier aussi le point abordé ici

https://forum.excel-pratique.com/excel/fichier-excel-tres-lent-t63055.html

et pour ce qui est de l'histoire des formats de cellules voir ce qui a été dit ici :

https://forum.excel-pratique.com/excel/incomprehension-de-la-taille-en-mo-d-un-fichier-excel-t57769.html?hilit=poids

voir la réponse de Loureed

puis en dernier voir les macros et eviter les .select mais sans les macros difficile de dire...

fred

Lien retrouvé

Performances d'Excel 2010 : Conseils pour éliminer les obstacles aux performances : msdn.microsoft.com/fr-fr/library/office/ff726673(v=office.14).aspx

Tu as de la lecture pour le we

eric

bonjour eriiic il y a un problème avec le lien ...

fred

Effectivement...

C'est le site qui n'aime pas les ( ) dedans.

J'ai édité, copier le texte pour le coller dans la barre d'adresse du navigateur.

Merci

eric

L'étiquette veut qu'on attende un peu (24-48 h sans réponse) avant de poster ailleurs, ou alors on le signale par respect.

A quoi ça sert qu'on répète ce qui a déjà été dit ailleurs et que lui relise les même choses ?

Là ça va c'était une question générale, mais le jour où tu auras passé 2h sur un fichier et que tu t'aperçois ensuite que c'est déjà résolu ailleurs depuis plusieurs heures te fera changer d'avis. Tu aurais pu aider qq'un d'autre et tu n'aurais pas gâché ton temps.

Mettons ça sur le compte de la méconnaissance dans un premier temps...

eric

Je suis d'accord avec toi sur le fond, notamment sur le temps que tu pourrais mettre pour quelqu'un d'autre. tous les jours je viens ici et ce que toi tu reussis faire en quelques minutes avec aisance moi il me faut des heures pour aboutir à une solution encore moins optimisée que la tienne. Bah je me dis que tant pis, tu as fais mieux que moi et plus rapidement donc je vais regarder comment tu as fais pour apprendre ce que je ne sais pas. Quelque part il n'y a pas de concurrence, y a un sujet à résoudre...Chacun propose sa solution avec ses méthodes et au contraire, plus il y a de proposition et plus on peut apprendre encore plus de chose, que ce soit sur se forum là ou sur un autre...Enfin bon ce n'est que mon avis ! (...)

Quand tu le fait en connaissance de cause ce n'est pas pareil que le découvrir après...

Ne me dis pas que tu cherches un truc en sachant qu'il est déjà trouvé, sauf si tu penses améliorer ou une autre façon de faire que tu penses intéressante

eric

Bonjour ériic le forum..., "...sauf si tu penses améliorer ou une autre façon de faire que tu penses intéressante..." . 1 sujet sur 1 forum c'est un éventail de possibilité à 1 dimension. Sur x forum c'est à x dimension...

Le partage des connaissances à grande échelle, c'est d'ailleurs le principe d'internet, c'est plus attractif qu'un réseau fermé.

Par ailleurs eriic et tu ne pourras pas dire le contraire, quand tu interviens sur un sujet après R@chid par exemple...Tu sais par avance que le problème est résolu car tu as confiance en la fiabilité de se dernier mais tu posts quand même ta solution...

have a nice day !

bonjour à vous

pour moi :

1/

il est normal que plusieurs personnes tentent de répondre à une même question

c'est tout l'intérêt du forum : obtenir une variété de soltutions

2/

il n'est PAS normal qu'une même question soit posée sur plusieurs forums en même temps.

par respect pour les "répondeurs", il faut leur laisser 1 jour ou 2 pour tenter des réponses.

En cas de non réponses ou réponses infructueuses, alors le forumeur peut aller sur un autre forum.

tous les forums fonctionnent ainsi, pour le bien de tout le monde

amitiés excelliennes

Ah bah si tous les forums fonctionnent ainsi... merci jmd, je dégage vite d'ici car je n'apprécie guere les "cgu fantôme" qui vous régissent.

Tu n'as pas à dégager d'ici. Chacun peu avoir son idée sur la question et agir en fonction, c'est lui que ça regarde.

Pour moi c'est aussi une question de bon sens et d'efficacité : si tu vois toutes les réponses apportées tu cherches autre chose plutôt que de répéter.

Pas de pertes de temps inutiles autant pour le demandeur que les helpeurs.

Simplement nous sommes nombreux à penser ainsi et un demandeur qui abuse voit de moins en moins de motivation à lui répondre.

A lui de voir son intérêt et ce qui est le plus efficace. Se griller ou patienter un peu et coopérer.

Je le répète pour ne affoler le demandeur, là ce n'est pas méchant (question générale ou basique qui ne demande pas à travailler un moment sur un fichier)

eric

Bonjour,

Désolée, mais je ne vois absolument pas en quoi il serait problématique de poster une même question sur 2 forums différents.

1. Cela n'enfreint pas les CGU des dits forums

2. je ne vois pas en quoi ce serait un manque de respect pour les participants au forum. Si je me pose une question, est-ce un sacrilège de demander son avis à 2 personnes différentes?

3. les échanges qui sont faits dans les 2 forums mentionnés sont utiles à tous : aussi bien à ceux qui posent des questions qu'à ceux qui y répondent ou à ceux qui liront les discussions concernée, car...

...4. car le but de nos échanges est, me semble-t-il, d'apprendre à mieux connaître Excel et nous perfectionner tous autant que nous sommes. C'est un jeu intellectuel, pas une course en sac.

5. une solution peut être donnée sur un forum et être utile à l'autre forum.

Echange et libre circulation de l'information ne sont-ils pas les principes mêmes d'internet?

Dans tous les cas, merci pour votre aide.

Bonne journée,

Nicole

Bonjour,

Bien sûr que tu peux.

Mais quand tu entres dans un groupe tu en respectes un minimum les règles je pense, qu'elles soient écrites ou non.

Tu pourras jamais obliger quelqu'un à te répondre. Et à titre d'information je te dis simplement que ceux qui en abusent finissent par revenir sous un autre pseudo en respectant ces règles car plus grand monde ne voulait perdre du temps avec eux. Chat échaudé craint l'eau froide...

Je t'explique seulement comment ça fonctionne, c'est tout. Libre à toi de ne pas vouloir l'entendre ou le comprendre.

Par ailleurs je ne vois pas où est le problème de le signaler par un lien pour que tout le monde ait l'ensemble des informations. Tu as des choses à cacher ?

eric

Rechercher des sujets similaires à "comment reduire poids fichier"