IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-02]Réduire la taille / le poids d'un classeur (avec connexion ADO)


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut [E-02]Réduire la taille / le poids d'un classeur (avec connexion ADO)
    Bonjour à tous,

    Je cherche une solution pour diminuer le poids de mon fichier excel.
    Ce fichier navigue entre boite e-mail d'ou son intéret.
    A force de faire des modifs, le poids s'agrandit.

    La taille du fichier représente environ 1,6 Mo
    Objectif : Diminuer ce poids d'environ 20%
    Je serais heureux si le poids pourrait atteindre 1,2 ~1,3Mo

    J'ai fais plein de suppression, mais a ma grande surprise, cela n'a pas fait baisser son poids au contraire, en supprimant des lignes, j'ai grossi son poids.

    Si vous avez des trucs, astuces, je suis preneur.

    Je ne peus malheureusement pas donner le code source et pas non plus le fichier.
    J'attends de vous des conseils, astuces.

    Je vous remercie

  2. #2
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    C'est un peu vague comme question, sans fichier, code,.......
    Est-ce que ton fichier contient des formules?
    Le nombre de feuilles?

    D'un coté, on ne peut pas enlever énormément de grosseur sans perdre de données...

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Le fichier comprend des formules, mais ces formules ne bougeront pas.

    C'est surtout du coté VBA que je souhaites faire du trie.
    Est ce que d'enlever les lignes inutiles pourrait y remédier ?
    Voici ce que j'attends comme réponses.

    Merci de m'aider

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par peofofo Voir le message
    Le fichier comprend des formules, mais ces formules ne bougeront pas.

    C'est surtout du coté VBA que je souhaites faire du trie.
    Est ce que d'enlever les lignes inutiles pourrait y remédier ?
    Voici ce que j'attends comme réponses.

    Merci de m'aider
    Hello,

    Oui, en effet, supprimer des lignes de code inutiles te feront gagner en taille.

    Mais il te faut en supprimer beaucoup ... pour enlever 400 ko !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Points : 29
    Points
    29
    Par défaut
    Bonjour peofofo,

    comme je m'étais posé la question une fois, voilà ce qu'un développeur m'avait dit : Le code VBA prend peu de place et ce n'est pas en supprimant quelques lignes de VBA, qui est du txt que tu vas gagner beaucoup de place.

    L'idéal serait d'enlever un maximum de formules mais tu dis que tu ne peux pas...
    Sinon une possibilité serait de faire faire les calculs par macro plutôt que par formule, là tu gagnerais beaucoup.

    Enfin, mais peut-être y a tu déjà pensé, lors de l'envoi de ton mail, au moment de zipper ton fichier, coche l'option "meilleure", tu gagneras là aussi pas mal de place par rapport à un envoi "par défaut".

    En espérant avoir été utile...

  6. #6
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    J'ai fait le test.
    Un fichier excel vide, avec un module vide. 16ko
    Maintenant, j'ai remplis le module de lignes pleines (de n'importe quoi...)
    Il est plein jusqu'à la limite de mémoire. Ce qui fait dans les 62000 lignes de code.... j'ai maintenant 1.65 mo...
    Tu dois avoir BEAUCOUP de ligne pour faire une différence

    Test 2. J'ai ensuite effacé toutes les lignes pour passer à seulement 100 lignes... je suis à 1.65 mo... Donc...

    Bien sur, recommencer à neuf te permettrait de garder seulement l'essenciel mais...

  7. #7
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Je détail mon fichier vba
    Module 1: 236 Lignes
    Module 2: 101 Lignes
    Module 3: 535 Lignes
    Module 4: 671 Lignes
    Module 5: 17 Lignes
    Module 6: 1034 Lignes
    Module 7: 97 Lignes
    Module 8: 66 Lignes
    Module 9: 3 Lignes
    Module 10: 868 Lignes
    Module 11: 1909 Lignes
    Module 12: 339 Lignes

    Pour un total de 5 786 Lignes

    Et j'ai des lignes blanches un peu de partout,
    J'ai également indenté le code afin de s'y retrouvé.
    J'ai ajouté des commentaires de lignes, là ou s'est nécessaire.

    J'ai lu ton test et effectivement, il est impressionnant.
    Je comprend mieux alors pourquoi lorsque je supprimais du code, en plus des déplacements, j'avais encore plus de poids.

    Il ne faut donc pas faire de modification, si je comprend bien

  8. #8
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Il est préférable d'avoir quelques Ko de plus et d'avoir du code bien écrit, bien placé et commenté.

    La plus gourmant sont les images bien sur, les formules....
    Si tu as une formule dans toute la colonne C qui fait la somme A + B, alors tu est mieux de faire une macro qui parcourt le fichier.

  9. #9
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Pour donnée un ordre d'idée, le fichier sans vba faisait 386ko.
    Il n'y a pas de formule de rajouté.

    J'espère vraiment gagné de l'espace car 5000 lignes représenterais alors 1,3Mo ce qui vraiment considérable.

    Je vais surement essayé de copier le code dans un nouveau document.

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Il me semble bien en avoir parlé il y a environ 1 an.

    C'est là un défaut conjugué de Office et de Windows.

    Tu en veux la preuve ?

    Crée un nouveau projet et colle-lui-dedans les mêmes choses (code et tout) ==> enregistre-le et regarde comme il aura perdu énormément de poids !

  11. #11
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    C'est long recommencer tout ce processus mais c'est de cette façon que tu gagneras le plus.

    En supprimant, il ne libère pas l'espace qui était occupée.
    Il serait utile d'avoir un genre de "defragmenté"... mais pour l'instant, nous devons le faire manuellement... (copier/coller!)

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Si tu veux un conseil, la mise en forme des feuilles (couleur des cellules, bordures, fond, ...) ainsi que les images sont très consommateurs de kilo-octets ! Minimise autant que faire se peux la mise en forme des cellules, tu verras une différence importante.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je pense que cela vient de tes feuilles, essayes de sélectionner toutes les lignes et colonnes vides (bien sûr) après ta dernière cellule renseignée et de supprimer le tout, ensuite tu enregistres et tu regardes ce que cela donne.

    Philippe

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Je me permets d'insister sur ce que j'ai exprimé plus haut, à savoir :

    Citation Envoyé par ucfoutu Voir le message
    C'est là un défaut conjugué de Office et de Windows.

    Tu en veux la preuve ?

    Crée un nouveau projet et colle-lui-dedans les mêmes choses (code et tout) ==> enregistre-le et regarde comme il aura perdu énormément de poids !
    Excel (et de manière plus générale les produits Microsoft Office) connaissent des problèmes à ce niveau et ce : depuis avant même l'apparition de VBA ...

    Les explications données par Micropsoft pour ce phénomène "serpent de mer" n'ont jamais été vraiment très claires et ont quelquefois différé selon le contexte !

    Voici un exemple de ces "explications confuses". En cherchant bien, vous tomberez ici ou là sur d'autres explications non moins confuses avec d'autres contextes !
    http://support.microsoft.com/kb/293828/fr
    Regardez donc la "solution" proposée ...

  15. #15
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Merci à tous d'avoir répondu.

    J'ai tous lu, et effectivement il doit y avoir un bogue chez microsoft.
    J'utiliser la connexion ADO qui est décrite dans le lien.

    Je viens de faire un essai.

    J'ai exporter tous les modules.
    J'ai ensuite importer les modules dans la nouvelle feuille.

    J'enregistre le nouveau document :
    Le résultat est impressionnant.
    Le document entier pèse désormais 1,120Mo
    Bref une dimininution de 500Ko plus de 25%.

  16. #16
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Voilà ...

    En faisant travailler ma mémoire, maintenant... je crois me rappeler une autre solution ayant fonctionné dans un autre contexte :
    1) copier dans un autre répertoire
    2) compresser (rar ou autre) le fichier
    3) le décompresser et l'envoyer en acceptant d'écraser

    EDIT :
    Je me rappelle maintenant un autre cas similaire (avec ADO).
    Il avait suffi de supprimer une MSFLEXGRID, de sauvegarder, puis de rouvrir et réinsérer la MSFLEXGRID, puis sauvegarder à nouveau et ... ===>> le fichier avait sacrément "maigri".

  17. #17
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Ta proposition m'intéresse comment procéde tu?

    J'ai pas bien compris.
    Tu archive ton document excel et tu le désarchive après ?

    Peus tu m'en dire mieux ?

  18. #18
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    La copie dans un autre répertoire n'est là que par sécurité (tu gardes ainsi l'original dans un autre répertoire)
    Tu vas ensuite dans l'explorateur et tu ouvre l'original, puis le compresses (tu fais un rar ou un zip, quoi...)
    tu décrompresses ensuite ce zip ou ce rar en l'extrayant vers ton répertoire d'origine et en acceptantr d'écraser le fichier existant (ou encore : tu extrais vers un autre nouveau répertoirte).
    C'est facile à comprendre.

  19. #19
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    J'ai compris.

    Tu utilises la compression et la décompression, c'est cela que tu veus dire ?

    -Le problème est que certaine personnes qui recevront ce fichier n'ont pas de base informatique et seront bloqué sur la décompression du fichier.

    Je pense que cela va compliqué le traitement.
    Je vais y réfléchir

    Merci pour ta proposition

  20. #20
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Pour ma part j'utilise un excelent programme de nettoyage VBACodeCleaner qui réduit la taille du fichier Excel de plus de 30% (mon fichier ne contient que du code VBA et aucune donnée).

    Ce programme contient en plus des options permettant de supprimer les lignes vides et les commentaires mais je ne les utilise pas.

    A+
    Thierry

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réduire la taille d'un vecteur de très grande dimension
    Par camboui dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 07/06/2017, 13h23
  2. diminuer le "poids" d'une image sans réduire sa taille
    Par laurentSc dans le forum Imagerie
    Réponses: 6
    Dernier message: 04/04/2009, 23h55
  3. Réduire la taille des fichier .LDF ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 31/03/2005, 11h48
  4. [GCC] Réduire la taille d'un programme statique
    Par Geronimo dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 05/03/2004, 16h34
  5. réduire la taille d'un datafile
    Par delphim dans le forum Administration
    Réponses: 30
    Dernier message: 20/02/2004, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo