Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
garnote
Le #4319131
Salut Christophe,

Il y a cette superbe macro de Laurent Longre
qui fait le ménage de ton classeur.
Tu peux aussi envoyer ton classeur dans un dossier
compressé (Windows XP le fait) :
1) Va dans "Poste de travail",
2) Trouve le dossier contenant ton document,
3) Fais un clic droit sur l'icône de ton document,
4) Pointe sur "Envoyer vers",
5) Clique sur "Dossier compressé".
Le dossier compressé apparaîtra dans la même dossier
que ton document.


Serge

Voici la macro de nettoyage :

Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String, _
Avant As Double, plage As Range
On Error Resume Next
Calc = Application.Calculation ' ---- mémorisation de l'état de recalcul
'------------------------------------------------------------
MsgBox "Pour le classeur actif : " _
& Chr(10) & ActiveWorkbook.FullName _
& Chr(10) & "dans chaque feuille de calcul" _
& Chr(10) & "recherche la zone contenant des données," _
& Chr(10) & "réinitialise la dernière cellule utilisée" _
& Chr(10) & "et optimise la taille du fichier Excel", _
vbInformation, _
"d'après LL par "
'-------------------------------------------------------------
MsgBox "Taille initiale de ce classeur en octets" _
& Chr(10) & FileLen(ActiveWorkbook.FullName), _
vbInformation, ActiveWorkbook.FullName
'------------------------------------------------------------
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = True
End With
'-------------------- le traitement
For Each Sht In Worksheets
Avant = Sht.UsedRange.Cells.Count
Application.StatusBar = Sht.Name & "-" & Sht.UsedRange.Address
'-------------------Traitement de la zone trouvée
If Sht.UsedRange.Address <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
'----------------Suppression des lignes inutilisées
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Delete
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(,2)
'----------------Suppression des colonnes inutilisées
If Not DCell Is Nothing Then Sht.Range(DCell, _
Sht.[IV1]).EntireColumn.Delete
End If
Rien = Sht.UsedRange.Address
End If
ActiveWorkbook.Save
'---------------------Message pour la feuille traitée
MsgBox "Nom de la feuille de calcul :" & Chr(10) & _
Sht.Name & Chr(10) & Format(Sht.UsedRange.Cells.Count / Avant, "0.00%") _
& " de la taille initiale", _
vbInformation, ActiveWorkbook.FullName
Next Sht
'--------------------Message fin de traitement
MsgBox "Taille optimisée de ce classeur en octets " & Chr(10) & _
FileLen(ActiveWorkbook.FullName), _
vbInformation, _
ActiveWorkbook.FullNameActive
'--------------------
Application.StatusBar = False
Application.Calculation = Calc
End Sub





































































"Christophe"
bonsoir,

comment diminuer le poids d'un fichier ,

Merci.


Modeste
Le #4260301
Bonsour® Christophe avec ferveur ;o))) vous nous disiez :

comment diminuer le poids d'un fichier ,


le 12 novembre 2000 Laurent nous expliquait :
http://minilien.com/?hQxfAd0KBQ
../..

Maintenant, pourquoi ce phénomène ? Parce qu'Excel stocke les données
des cellules sous la forme suivante:

- Pour chaque feuille, il mémorise les numéros de ligne de la première
cellule et de la dernière cellule utilisées, au sens large (cellule
contenant une valeur ou ayant un format particulier).


- Toutes les lignes se situant entre ces deux cellules sont divisées en
blocs de 32 lignes maxi.


- L'adresse de départ de chacun de ces blocs est mémorisée dans un
enregistrement dénommé INDEX. Ces adresses sont stockées sur 4 octets.


- Chaque bloc comprend au moins un enregistrement (DBCELL) de taille
variable contenant les adresses des enregistrements décrivant les lignes
de données (ROW) et les contenus des cellules (champs RK, ARRAY, BLANK,
BOOLERR, FORMULA, NUMBER, MULRK etc selon le type de valeur). Si le bloc
ne contient rien, cad si les 32 lignes sont complètement vides,
l'enregistrement DBCELL correspondant fait une taille de 8 caractères
(descripteur d'enregistrement + adresse du premier bloc suivant).


Je vais prendre l'exemple d'une feuille contenant une valeur (ou
simplement un format particulier) en A1, une autre en A65536, et à part
ça du vide total, pour déduire par calcul la taille nécessitée:


- Nombre de lignes de la plage "utile" : 65536


- Nombre de blocs de 32 lignes :
65536 / 32 = 2048 blocs


- Stockage des adresses (4 octets) de ces 2048 blocs dans
l'enregistrement INDEX:
2048 * 4 = 8 192 octets


- Stockage des enregistrements DBCELL des 2048 blocs (8 octets chacun):
2048 * 8 = 16 384 octets


- Total nécessaire : 8192 + 16384 = 24 576 octets, soit 24 K.


Toutes les lignes vides entre A1 et A65536 vont donc entraîner une
surcharge pondérale d'environ 24 K.


Si je reprends mon premier exemple (les 5 feuilles), le compte est bon:
classeur sans lignes vides = 20 K, classeur avec cellule A65536 remplie
= 142 K, différence = 122 K, divisée par 5 feuilles = 24,4 K.


Conclusion : quand la taille du classeur paraît démseurée, il est
impératif de vérifier au moins qu'il ne traîne aucune cellule isolée
quelque-part très bas dans une des feuilles de calcul, contenant soit
une valeur, soit un format particulier. Et de supprimer le cas échéant
toutes les lignes qui vont de cette cellule à la dernière ligne
réellement utilisée dans la feuille.

C'est une raison possible d'obésité parmi d'autres, il y en a d'autres
possibles

../..
--
--
@+
;o)))

cousinhub
Le #4259871
Bonsoir, de quoi est constitué principalement ton fichier?
Graphiques, TCD...?
Exemple pour un TCD :
6 colonnes, 31 lignes (dont ligne de titre)
référence pour le TCD : colonnes A à F
poids du fichier : 660 Ko
référence pour le TCD : zone nommée ou sélection exacte de la base
poids du fichier : 13 Ko soit 50 fois moins....
Pour les graphiques, utilité de les conserver dans le fichier?
Une macro peut le faire apparaître en moins d'une seconde...
Bon courage

bonsoir,

comment diminuer le poids d'un fichier ,

Merci.


garnote
Le #4259851
Et pour les graphiques, il me semble qu'il est conseillé
de décocher "Échelle Automatique" que l'on trouve
dans "Format de l'axe" après avoir double-cliqué
sur un axe (onglet Police).

Serge


"cousinhub"
Bonsoir, de quoi est constitué principalement ton fichier?
Graphiques, TCD...?
Exemple pour un TCD :
6 colonnes, 31 lignes (dont ligne de titre)
référence pour le TCD : colonnes A à F
poids du fichier : 660 Ko
référence pour le TCD : zone nommée ou sélection exacte de la base
poids du fichier : 13 Ko soit 50 fois moins....
Pour les graphiques, utilité de les conserver dans le fichier?
Une macro peut le faire apparaître en moins d'une seconde...
Bon courage

bonsoir,

comment diminuer le poids d'un fichier ,

Merci.




rthompson
Le #4318481
Bonjour

Si je comprends bien ce que tu dis
Si au lieu de mettre les graphiques dans le fichiers , il suffit (par
enregistrement)
de faire une macro qui créé et format tous les graphiques et de le mettre en
auto exec
Alors chaque fois que le fichier sera ouvert, il les recrée en deux secondes
tandis que le poids du fichier est réduit

C'est ça?

Merci et à plus tard

Rex




"cousinhub"
Bonsoir, de quoi est constitué principalement ton fichier?
Graphiques, TCD...?
Exemple pour un TCD :
6 colonnes, 31 lignes (dont ligne de titre)
référence pour le TCD : colonnes A à F
poids du fichier : 660 Ko
référence pour le TCD : zone nommée ou sélection exacte de la base
poids du fichier : 13 Ko soit 50 fois moins....
Pour les graphiques, utilité de les conserver dans le fichier?
Une macro peut le faire apparaître en moins d'une seconde...
Bon courage

bonsoir,

comment diminuer le poids d'un fichier ,

Merci.




cousinhub
Le #4265521
Bonsoir,
oui tu as bien compris, et même que les graphiques, tu n'es pas obligé
de les créer à l'ouverture, mais par appui sur un bouton....
Testé sur un gros fichier de données, poids du fichier qui n'avait rien
à voir avec l'ancien (contenant les graphiques).
Création du graphique en 0.2 s lors de la première utilisation, 0.08
ensuite...
Sans problème d'impression (les paramètres sont enregistrés dans le
code), de gestion des zones de données (les zones sont dynamiques), on
ne change pas de feuilles (le graphique peut s'y insérer en pop-up)....
Bref, que du bonheur...

Bonjour

Si je comprends bien ce que tu dis
Si au lieu de mettre les graphiques dans le fichiers , il suffit (par
enregistrement)
de faire une macro qui créé et format tous les graphiques et de le mettre en
auto exec
Alors chaque fois que le fichier sera ouvert, il les recrée en deux secondes
tandis que le poids du fichier est réduit

C'est ça?

Merci et à plus tard

Rex




"cousinhub"
Bonsoir, de quoi est constitué principalement ton fichier?
Graphiques, TCD...?
Exemple pour un TCD :
6 colonnes, 31 lignes (dont ligne de titre)
référence pour le TCD : colonnes A à F
poids du fichier : 660 Ko
référence pour le TCD : zone nommée ou sélection exacte de la base
poids du fichier : 13 Ko soit 50 fois moins....
Pour les graphiques, utilité de les conserver dans le fichier?
Une macro peut le faire apparaître en moins d'une seconde...
Bon courage

bonsoir,

comment diminuer le poids d'un fichier ,

Merci.








Publicité
Poster une réponse
Anonyme