Savoir pourquoi mon fichier est si lourd

miguelangelo

XLDnaute Occasionnel
Bonjour à tous,

j'ai un fichier xls qui pèse 10 mo. (oui j'imagine vos têtes)
c'est une interface pour de la saisie automatisée (truffé de formules) qq macros, permettant de generer des csv pour oracle.

donc 10 Mo en étant vierge..

donc, je veux le l'alléger.

est qu'il y a un moyen pour quantifier le poids (mo) de chaque onglet, des lignes de codes, etc ??? un indicateur me permettant de cibler là ou je devrais alléger ?

Merci à tous.
 

job75

XLDnaute Barbatruc
Re : Savoir pourquoi mon fichier est si lourd

Bonjour miguelangelo,

Faites des copies du fichier et supprimez les onglets un par un, ou les lignes de codes, puis regardez le poids du nouveau fichier...

Souvent le fichier se gonfle exagérément quand on y a fait de nombreuses modifications de format. On peut l'alléger alors en faisant du copier/coller sur des feuilles vierges.

A+
 

gwenlorin

XLDnaute Occasionnel
Re : Savoir pourquoi mon fichier est si lourd

Salut,

perso j'utilise cette macro (récupérée je ne sais plus où)
vois si ca peux t'aider. Si tu la complète merci de poster le nouveau code.

Code:
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
'-------------------------------------------------------------
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.FullName
'--------------------
Application.StatusBar = ""
Application.Calculation = Calc
ActiveWorkbook.Save
Application.Cursor = xlDefault
Application.ScreenUpdating = True
End Sub