début de raisonnement sur le poid..

mikepers

XLDnaute Occasionnel
Bonsoir le forum, merci pour la qualité du site.
Suite à des problème de poid de fichier (...), je cherche des moyens et astuces pour réduire le poid d'un fichier. (Mon niveau est assez moyen)
exemple:
dans le cadre d'une base de donnée, lorsqu'on place le code..

Sheets("Feuil1").Select
Dim x As Integer
x = Range("A65536").End(xlUp).Row + 1


Par exemple, les "65536" sont ils vraiment necessaires, si la base contient
environs 150 lignes? peut on écrire alors:

x = Range("A65536").End(xlUp).Row + 1

ou bien n'est ce pas possible? J'entend par la que la réduction de taille de l'integer peut ( peut être ) éviter des calculs inutiles à Excel, et gagner ansi de précieux octets au final ( ??)
Je me pose aussi la question:
Dans FLASH MX, le logiciel de création graphique ( qui fonctionne avec du code Action Script ), lorqu'on a terminé un fichier qui "tourne" correctement,
une fonction extraordinaire permet de chercher dans la bibliothèque d'objets du projet, des éléments oubiés, des bouts de code ou des objets mis là pendant la phase de création, mais qui ne servent plus à rien et alourdissent le fichier final. On peut alors "nettoyer" le fichier final qui est alors optimisé au niveau du poid. Ya t'il une procédure équivalante dans VBA?
Dernier point:
finalement, quel sont les éléments qui alourdissent le plus nos fichiers xls:
_ le code VBA?
_les images ?
_ les mises en forme?
_ les formules ?
_ les USF ?

Bref, j'ai un peu fouillé dans le forum, il y a bien entendu beaucoup de bonnes infos à glanner ( comme d'ab ), mais vu mes soucis actuels, si qu'elqu'un a un fil ou une idée, une astuce, je le remercie par avance.
Bien à vous, encore merci.
 

mikepers

XLDnaute Occasionnel
Re : début de raisonnement sur le poid..

Oups, pardon pour l'erreur de début: il s'agit bien sûr de:


Par exemple, les "65536" sont ils vraiment necessaires, si la base contient
environs 150 lignes? peut on écrire alors:

x = Range("A1200").End(xlUp).Row + 1

?????
 

Samantha

XLDnaute Accro
Re : début de raisonnement sur le poid..

Bonjour le Forum, les Gens, Mikepers, Evelynetfrancois,

Je n'y connais rien en VBA alors je m'abstiendrais, mais :
- Concernant les images oui je peux te dire que, au moins les copies écran ça plombe vite un fichier.
- Les mises en forme aussi.
- Les grosses formules identiques dans des milliers de cellules aussi, et les liaisons entre feuilles et classeurs idem

Des bouts de piste :

- Le nommage des plages et le nommage des formules qui allège considérablement les formules. (voir tuto ci-joint)
- N'appliquer les mises en forme qu'aux cellules qui en ont besoin (genre pas sélectionner la colonne entière ou la ligne complète pour appliquer un fond, une bordure ou une police spéciale (parce que ça en plus ça fait foirer les impressions et gâcher du papier car XL considère que toutes les cellules mises en forme font partie de la zone d'impression.)
-Voir si par insérer une image à partir du fichier ça fait quelque chose (mais alors là faut travailler le fichier image pour qu'il soit léger léger et surtout veiller à ce que le format ne soit pas un *.bmp car c'est un des formats image les plus lourds (si quelqu'un a des logiciels de traitement immage qui permettent de faire des tests qu'ils nous tienne au courant)


A te lire



Sam
 

Pièces jointes

  • Tuto Nommage de cellule.xls
    28.5 KB · Affichages: 87
  • Tuto Nommage de cellule.xls
    28.5 KB · Affichages: 88
  • Tuto Nommage de cellule.xls
    28.5 KB · Affichages: 89
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : début de raisonnement sur le poid..

Bjr à tous,

Samantha à dit:
- Le nommage des plages et le nommage des formules qui allège considérablement les formules. (voir tuto ci-joint)

Autre façon plus rapide et plus simple de nommer une(des) cellule(s) :

Avant, s'assurer que "Affichage / Barre de formule" est coché.

-> sélectionner la ou les cellules
-> en haut à gauche, apparaît les coordonnées de ta(es) cellule(s), cliquer dessus, écrire à la place le "nom" que tu veux, puis valider avec "ENTER".
 

Excel-lent

XLDnaute Barbatruc
Re : début de raisonnement sur le poid..

Slt Milepers,
mikepers à dit:
Par exemple, les "65536" sont ils vraiment necessaires, si la base contient
environs 150 lignes? peut on écrire alors:

x = Range("A250").End(xlUp).Row + 1

Du plus simple ou plus difficile :
-> fixer dés le départ le nb de ligne maxi et l'indiquer dans la macro, comme proposé par Evelynetfrancois. Quand nécessaire, aller le modifier à la main dans la macro.

-> insérer dans la macro :
...
NbLigne = Msgbox "Combien de ligne comporte le document"
...

Ainsi tu n'auras pas besoin d'aller dans la macro pour modifier le chiffre.

-> demander à la macro de chercher le numéro de la dernière ligne "non-vide" (question abordé dans d'autres posts)
 

Bricofire

XLDnaute Impliqué
Re : début de raisonnement sur le poid..

Bonjour tout le monde, :)

Intuitivement, je pense qu’il ne faut pas confondre poids, qui est par défaut la taille d’un fichier occupée sur le support de stockage et ressources utilisées liées à des choix de formules, de mise en page d’approches VBA etc… utilisées qui se répercutent clairement sur la vitesse d’exécution ou les possibilités de portage (faire tourner sur des bécanes anciennes et pauvres).

Pour ce qui est du poids pur, tu peux regarder sur ce fil et faire les tests, c’est assez parlant

http://www.excel-downloads.com/forum/63520-boucle-vba.html

Tu peux aussi créer un fichier basique, l’enregistrer, y ajouter une image en arrière plan, enregistrer en V2 et regarder les poids LoL !

Sinon pour éviter des manips de fenêtres, tu peux employer VBA pour connaître le poids aussi :

MsgBox FileLen(ThisWorkbook.FullName) & " octets" (dj.joss)
voir aide VBA :

FileLen, fonction / Aide VBA
Renvoie une valeur de type Long indiquant la longueur en octets d'un fichier.
Syntaxe : FileLen(pathname)
L'argument pathname est une expression de chaîne définissant un fichier. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.
Remarques
Si le fichier indiqué est ouvert lors de l'appel de la fonction FileLen, la valeur renvoyée représente la taille du fichier juste avant son ouverture.
Note Pour connaître la longueur d'un fichier ouvert, utilisez la fonction LOF.

Ensuite pour la vitesse, plein de choses peuvent intervenir de façon plus importante qu'on pense ! voir entre autre :

https://www.excel-downloads.com/threads/performance-pour-copier-des-donnees.65094/

Il faut aussi imperativement éviter d'employer des selections quand il n'y a pas besoin pour manipuler les données ( feuilles, range, ...), voir les fils sur
ScreenUpdating aussi.

Le mieux est de faire des test avec un timer ou des comparatifs de poids de façon empirique sur des facettes de ton appli que tu soupçonnes d'effets indésirés, au cours du développement de ton appli, en faisant des suavegardes incrémentées au fur et à mesure des changements (ce qui est déjà normal en soi...), tu pourras détecter plus facilement les causes d'un changement.

Solution , idéale sinon, c'est de ne pas être autodidacte et d'apprendre à programmer proprement par enseignement :rolleyes: , je n'ai pas fait, donc reste à surveiller les forums et noter ce qui t'interpelle (tuto ? ;) ), vu que les mots clefs sont rarement ceux qu'on attends (voir lien).

Bonne journée,

Edition : Oups, important, il est aussi très très interessant d'employer le plus possible les fonctions natives d'Excel en VBA, genre filtres auto, atteindre etc... En consultant les fils dessus car des particularités, voir des limites ou des bugs...
 
Dernière édition:

Dan

XLDnaute Barbatruc
Re : début de raisonnement sur le poid..

Bonjour,

Mikepers, le fait d'écrire A65536 ne va pas augmenter le poids de ton fichier. Juste un petit peu de temps en plus et encore on parle de quoi là ? de seconde, centième, ...:confused: Lol !.
Si tu veux vraiment le savoir, Bricofire te donne des liens avec des tests effectués.
Par contre comme le précise Samatha, il y a mieux à faire notamment dans la gestion des données encodées et/ou de calculs à effectuer.
Comme précisé dans les archives du forum (je ne retrouve plus les anciens fils que j'ai pu traiter à ce sujet...:( ) pour ce genre de pb : Couleur, brodures (surtout), noms dans les formules sont des choses importantes.

Je te donne un lien à lire également qui rejoint ce qui a été dit ici : Lien supprimé

Si pb n'hésite pas.

Bon ap.
 

Samantha

XLDnaute Accro
Re : début de raisonnement sur le poid..

Bonjour Le Forum, Les Gens, Le Fil,

Ben pour les archives y'a déjà les 5 fils repris en bas de page dans le tableau Discussions Similaires qui reprennent aussi les idées exposées ci-dessus ;) dont le "G un gros problème de poids" qui fait part de l'importance du choix de la fonction utilisée dans le temps de recalcul (du poids ?) visiblement plus un fichier est lourd plus XL passera de temps à effectuer les calculs de mise à jour non ?

A vous lire

Sam
 

Bricofire

XLDnaute Impliqué
Re : début de raisonnement sur le poid..

re All, :)

Pour reprendre le post de Samantha de 13h16, c'est en effet important le format des images, si on prend une image en JPG qui pèse 1.3 Mo et qu'on la transforme en bmp, elle pèse du coup... 14.8 Mo :)

(Quel intérêt de faire la manip dans ce sens? si le bmp pèse si lour, c'est que les autres (certains) sont des formats de compressions... destructifs. Donc si vous faites des manips de retouches successives en sauvegardant successivement en jpg, vous détruisez de plus en plus votre image. En la passant en bmp, vous pouvez faire la même chose en restant uniforme, puis convertir en JPG pour l'exploitation finale).

Donc en insérant nos deux images dans 2 classeurs Excel ont obtient successivement 1.367 Mo et 4.717 Mo dur à mettre en Pj sur le fil :)

Pour faire facilement du redimentionnement ou de la conversion, vois Pixresizer qui est gratuit et complètement intuitif ... Cf ce fil :

https://www.excel-downloads.com/threads/redimensionner-des-images.52994/


Bonne journée
 

Dan

XLDnaute Barbatruc
Re : début de raisonnement sur le poid..

Bonsoir,

Bien sûr Samantha que j'avais vu qu'il y a 5 archives en dessous.
Toutefois les archives dont je parlais remontent à 2004 et là pour s'y retrouver avec le forum Archives c'est pas facile sauf avec la fonction "Recherche" si tu connais le nom ou la date du fil.

Excellent, as-tu vérifié avant de placer ton code là ?
Code:
NbLigne = Msgbox "Combien de ligne comporte le document"
??

Bonne soirée à tous.
 

Discussions similaires

Statistiques des forums

Discussions
312 799
Messages
2 092 221
Membres
105 295
dernier inscrit
nroch