J'ai un fichier simple et petit dans * .XLS avec seulement une feuille, sur cette feuille juste beaucoup de cellules avec le petit texte sur le nombre. (taille du fichier 24Ko)
Mais j’ai fait beaucoup de modifications, copier/coller, étendre la formule, sauvegarder ... ensuite, j’ai supprimé la plupart de ces modifications et en ai dupliqué 4 copies avec peu de données.
Maintenant, mon nouveau fichier est TRÈS énorme : 2.5Mb!
Où se trouvent les données cachées et comment puis-je les supprimer?
J'ai le même problème sur le fichier réel avec 300 feuilles et 1 image sur chaque feuille: taille du fichier 280Mb
J'ai écrit un fichier VBA pour ajouter un outil nettoyant ces fichiers anormalement volumineux . Ce script efface toutes les colonnes et les lignes après les dernières cellules réellement utilisées pour réinitialiser les dernières cellules ([Ctrl] + [Fin]), et fournit également activer la compression des images.
Je dev un AddIns avec l'installation automatique (il suffit de l'exécuter avec la macro activée) pour inclure dans le menu contextuel de nombreux nouveaux boutons:
Ceci est basé sur KB de Microsoft Office 2003 et réponse de PP. avec amélioration personnelle:
SOLUTION> vous pouvez télécharger mon fichier * .xlam ToolsKit
le code principal est
Sub ClearExcessRowsAndColumns()
Dim ar As Range, r As Double, c As Double, tr As Double, tc As Double
Dim wksWks As Worksheet, ur As Range, arCount As Integer, i As Integer
Dim blProtCont As Boolean, blProtScen As Boolean, blProtDO As Boolean
Dim shp As Shape
Application.ScreenUpdating = False
On Error Resume Next
For Each wksWks In ActiveWorkbook.Worksheets
Err.Clear
'Store worksheet protection settings and unprotect if protected.
blProtCont = wksWks.ProtectContents
blProtDO = wksWks.ProtectDrawingObjects
blProtScen = wksWks.ProtectScenarios
wksWks.Unprotect ""
If Err.Number = 1004 Then
Err.Clear
MsgBox "'" & wksWks.Name & "' is protected with a password and cannot be checked.", vbInformation
Else
Application.StatusBar = "Checking " & wksWks.Name & ", Please Wait..."
r = 0
c = 0
'Determine if the sheet contains both formulas and constants
Set ur = Union(wksWks.UsedRange.SpecialCells(xlCellTypeConstants), wksWks.UsedRange.SpecialCells(xlCellTypeFormulas))
'If both fails, try constants only
If Err.Number = 1004 Then
Err.Clear
Set ur = wksWks.UsedRange.SpecialCells(xlCellTypeConstants)
End If
'If constants fails then set it to formulas
If Err.Number = 1004 Then
Err.Clear
Set ur = wksWks.UsedRange.SpecialCells(xlCellTypeFormulas)
End If
'If there is still an error then the worksheet is empty
If Err.Number <> 0 Then
Err.Clear
If wksWks.UsedRange.Address <> "$A$1" Then
ur.EntireRow.Delete
Else
Set ur = Nothing
End If
End If
'On Error GoTo 0
If Not ur Is Nothing Then
arCount = ur.Areas.Count
'determine the last column and row that contains data or formula
For Each ar In ur.Areas
i = i + 1
tr = ar.Range("A1").Row + ar.Rows.Count - 1
tc = ar.Range("A1").Column + ar.Columns.Count - 1
If tc > c Then c = tc
If tr > r Then r = tr
Next
'Determine the area covered by shapes
'so we don't remove shading behind shapes
For Each shp In wksWks.Shapes
tr = shp.BottomRightCell.Row
tc = shp.BottomRightCell.Column
If tc > c Then c = tc
If tr > r Then r = tr
Next
Application.StatusBar = "Clearing Excess Cells in " & wksWks.Name & ", Please Wait..."
Set ur = wksWks.Rows(r + 1 & ":" & wksWks.Rows.Count)
'Reset row height which can also cause the lastcell to be innacurate
ur.EntireRow.RowHeight = wksWks.StandardHeight
ur.Clear
Set ur = wksWks.Columns(ColLetter(c + 1) & ":" & ColLetter(wksWks.Columns.Count))
'Reset column width which can also cause the lastcell to be innacurate
ur.EntireColumn.ColumnWidth = wksWks.StandardWidth
ur.Clear
End If
End If
'Reset protection.
wksWks.Protect "", blProtDO, blProtCont, blProtScen
Err.Clear
Next
Application.StatusBar = False
' prepare les combinaison de touches pour la validation automatique de la fenetre
' Application.SendKeys "%(oe)~{TAB}~"
' ouvre la fenetre de compression des images
Application.CommandBars.ExecuteMso "PicturesCompress"
Application.ScreenUpdating = True
End Sub
Function ColLetter(ColNumber As Integer) As String
ColLetter = Left(Cells(1, ColNumber).Address(False, False), Len(Cells(1, ColNumber).Address(False, False)) - 1)
End Function
Je sauve des fichiers au format .XLSB pour couper la taille. XLSB permet également à VBA et aux macros de rester avec le fichier. J'ai vu des fichiers de 50 Mo avec moins de 10 avec le formatage binaire.
Si votre fichier est simplement du texte, la meilleure solution consiste à enregistrer chaque feuille de calcul au format .csv, puis à le réimporter dans Excel.
J'ai beaucoup travaillé dans Excel et j'ai trouvé les 3 points suivants très utiles
Vous pouvez le trouver en utilisant la propriété suivante sur une feuille
ActiveSheet.UsedRange.Rows.Count
ActiveSheet.UsedRange.Columns.Count
Si cette plage est supérieure aux cellules sur lesquelles vous avez des données, supprimez le reste des lignes/colonnes.
Vous serez surpris de voir la quantité d'espace qu'il peut libérer
Le format XLSM doit rendre Excel compatible avec Open XML, mais il existe très peu d'instances dans lesquelles nous utilisons réellement le format XML d'Excel. Cela réduit la taille de près de 50% sinon plus
Par exemple, si vous devez enregistrer le cours de l'action pendant environ 10 ans et si vous souhaitez enregistrer les actions suivantes: Ouvert, Elevé, Faible, Fermé, vous obtiendrez ainsi (252 * 10) * (4) cellules utilisées
Au lieu de cela, utilisez des colonnes séparées pour Ouvrir, Élevé, Faible, Fermer, enregistrez-les dans une seule colonne avec un séparateur de champ.
Vous pouvez facilement écrire une fonction pour extraire les informations de la colonne unique quand vous le souhaitez, mais cela libérera presque les deux tiers de l'espace que vous utilisez actuellement.
changer le format du fichier en * .XLSX cette modification compresse mon fichier et réduit la taille du fichier de 15%
J'avais un fichier Excel de 24 Mo en taille, grâce à plus de 100 images. J'ai réduit la taille à moins de 5 Mo en procédant comme suit:
Il m'a fallu 2 jours pour comprendre cela car cela ne figurait dans aucun forum d'aide. J'espère que cette réponse aide quelqu'un
BR Gautam Dalal (Inde)
Consultez des articles tels que: http://www.officearticles.com/Excel/clean_up_your_worksheet_in_Microsoft_Excel.htm ou http://www.contextures.on.ca/xlfaqApp.html #Unused
Essentiellement: essayez googler?
Je suis tombé sur une raison intéressante pour un fichier .xlsx gigantesque ... Le classeur original comportait une vingtaine de feuilles et faisait environ 20 Mo. J'ai créé un nouveau classeur avec l'une des feuilles, de sorte qu'il serait plus facile à gérer: 11,5 MB Imaginez ma surprise de constater que la feuille simple dans le nouveau classeur contenait 1 041 776 (les compte!) Lignes vides . Maintenant, il est 13,5 KB