Gestion de Memoir Sous Excel et VBA

A

Amine

Guest
Je vous félicite pour votre site que j’utilise comme référence pour mes travaux.
J’ai une question pour vous svp. J’ai une application sous Excel, dans la quelle j’ai un programme de plusieurs macros avec vba (environ 3000 lignes de code vba que j’ai produis). Le problème c’est que mon application prend beaucoup d’espace mémoire (10MB) et ça avant même que je saisie des données dans les feuilles Excel. Alors voilà ma question. Y a-il un moyen de réduire l’espace mémoire pour une application Excel?
 
F

frédéric

Guest
Bonjour Amine

Je suis un petit peu dans ta situation, et je n'ai pas trouvé de solution miracle.
Ma solution d'attente consiste en la création d'une librairie de macro.xls(6M0 actuellement) à laquelle je fais appel lorsque j'ai besoin des macros qu'elle contient...
Tous mes fichiers traitement sont donc "légers" puisque ne contenant que leurs données à traiter par les macros.

Une solution autre et plus intelligente m'interesse vivement!

Avis aux pros du VBA

Cdt

Frederic
 
A

Amine

Guest
Avant tt je vous souhaite tous une bonne année 2005.
Merci Frédéric pour ta réponse instructive.
J’ai procède à l’expérience suivante, après avoir lu votre réponse, la taille de mon application est de 9,270 kb, j’ai supprimé le module dans le quel j’avais mon code vba et cette fois la taille de mon application était de 8,892 kb, donc vous allez remarque que l’espace occupé par le code est vraiment minable.
Je suis certain maintenant que c’est les cellules non utilisées dans les feuilles Excel (dans mon application il y a 13 feuilles) qui causent ce gonflement d’espace mémoire.
Alors, y a-il un moyen de parcourir feuille par feuille et limiter leur taille?

Merci et comme dit Fréd : Avis aux pros du VBA
 
F

frédéric

Guest
Jai déja eu le cas d'un fichier (hors macros) trop lourd, et cela était du au fait
que de nombreuses cellules contenaient des fonctions tres "lourdes" qui faisaient appel à trop de données dans plusieurs feuilles à la fois.
si tel est ton cas, moi, j'ai amélioré les choses en allégeant le contenu des cellules (ex: "fonction faisant appel à des sommes de cellules se trouvant dans 12 feuilles différentes" transformé en "somme dans chaque feuille+ fonction récupérant les sommes de chaque feuilles...")
Bref : alléger excel en "subdivisant" si c'est possible évidemment!
 
A

Amine

Guest
C’est une superbe idée que tu me propose mais malheureusement ce n’est pas vraiment mon cas.
Dans mon application, je saisis des données dans les feuilles Excel et le code VBA lit ces données et les transfèrent dans des fichiers Txt. Donc, je fais, quasiment, aucun calcul dans les cellules.
J’ai procède à une autre expérience.
J’ai crée un bouton qui permet de supprimer toutes les données qui existent dans mes 13 feuilles.
C’était un truc de ce genre
Private Sub EraseAllButton_Click()
….
…..
‘saisie du nom du classeur actif
Name = ActiveWorkbook.Sheets(I).Name

For I = 1 To ActiveWorkbook.Sheets.Count
‘d’apres le nom de la feuille Name alors supprimer son contenu
Select Case Name
Case "KeyUsage"
ActiveWorkbook.Sheets(I).Range("a2:b20000").Clear
Case "Errors"
ActiveWorkbook.Sheets(I).Range("a2:d5000").Clear
Case "Hiearchy"
ActiveWorkbook.Sheets(I).Range("a5:t20000").Clear
….
End Select
Next I
Quand j’exécute ce code alors la taille de mon application augmente !
Oui, je sais, vous allez me dire que ce code supprime des données alors la taille doit diminuer. Et bien non!!!

Alors j’ai optimise mon code comme suite :
Private Sub EraseAllButton_Click()
….
…..
‘saisie du nom du classeur
Name = ActiveWorkbook.Sheets(I).Name
For I = 1 To ActiveWorkbook.Sheets.Count
‘d’apres le nom de la feuille Name alors supprimer l
Select Case Name
Case "KeyUsage"
ActiveWorkbook.Sheets(I).Range("a2:b20").Clear
Case "Errors"
ActiveWorkbook.Sheets(I).Range("a2:d50").Clear
Case "Hiearchy"
ActiveWorkbook.Sheets(I).Range("a5:t200").Clear
….
End Select
Next I
Et dans ce cas, l’espace mémoire occupé par cette application reste stable.
J’espère que vous comprenez que c’est vraiment les cellules non utilisées qui occupent de l’espace mémoire pour rien.
Ma question est :
Y a-il une fonction sous vba que je peux utiliser pour spécifier la taille maximum pour une feuille dans Excel?
 
E

emg

Guest
Bonsoir les amis (e) le forum

il me semble que le fichier Karcher.xla de Frédéric Lhommé fait ca correctement a l'adresse suivante rubrique Utilitaire

<http://www.excel-downloads.com/html/French/tele_clic.php?nom_fichier=Karcher>

@+ Gérard
 
F

frédéric

Guest
Bonjour amine et emg,
dans la mesure où la solution de Emg ne répond pas à ton problème, pourquoi ne récupères tu pas (avant d'effectuer les suppressions) les adresses de tes plages que tu dois supprimer?
cdt
frédéric
 
A

Amine

Guest
Bonjour Fréd,
C’est ce que j’ai fais, au lieu d’écrire :
ActiveWorkbook.Sheets(I).Range("a2:d5000").Clear
Alors j’ai mis :
ActiveWorkbook.Sheets(I).Range("a2:d50").Clear

Donc, j’ai récupère juste les adresses de mes plages que je dois supprimer.
Dans tt les cas, l’exemple bouton qui permet de supprimer toutes les données était juste une expérience qui me permettait de comprendre le problème.

Merci Gérard pour le Freeware Karcher.xla. Entre nous, ce petit programme fait des miracles, je l’avoue! Mon application a passé de 10MK a 400K. Sérieusement ce truc est fabuleux.

Toute fois, quand j’ajoute des nouvelles données dans une ligne dans n’importe quelle feuille et que je fais Ctrl-s (enregistrer) alors la taille de mon fichier revient, quasiment a 8000Kb.

D’après moi, il faut pourvoir utiliser les fonctions de ce Add-In lors de l’appel de la procedure Workbook_BeforeSave.

Ahh, si seulement le proprio de ce fichier accepte de nous donner un coup de main ou même juste le PW de son Add-In!!!!! ;-)

Dans tt les cas, merci les gars, vous avez vraiment un bon esprit combatif et solidaire.
 
A

Antoine (Dév. amateur

Guest
Bonjour,

C'est un problème que j'ai encore mais dans une moindre mesure, je m'explique. J'ai développé une petite application avec passablement de code mais surtout, plusieurs feuilles avece plei plei plei de formats (j'aime qu'Excel ne ressemble pas à Excel :-D).
 
A

Antoine (Dév. amateur)

Guest
Bonjour,

C'est un problème que j'ai encore mais dans une moindre mesure, je m'explique. J'ai développé une petite application avec passablement de code mais surtout, plusieurs feuilles avec tout plein de formats (j'aime qu'Excel ne ressemble pas à Excel :-D). J'utilise donc des styles. Du coup, mon fichier est passé de 1.2 Meg à pratiquement 8 Meg!!! Malheur, "XL : Message d'erreur : Nombre de formats de cellule différents trop élevé", tout plante. :-S. Alors, il faut lire ici : http://support.microsoft.com/default.aspx?scid=kb;fr;213904. Ça peu probablement vous aider, bien que ça ne règle pas tout! :). Mais par la suite, j'ai standardisé mes formats, éliminé des cellules fusionnées, etc et maintenant, bien que j'ai des objets, des liste, etc, mon fichier est stable à 2 Meg.

Bonne programmation

Antoine
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 275
Membres
103 504
dernier inscrit
Marie28