[EXCEL] Reduire/Minimiser la taille d'un fich

Kinslown Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
HUGO BASS Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   - 4 avril 2015 à 12:52
Bonjour,

J'ai un probleme tout bête mais assez penible: mon fichier Excel fait plus de 100 Mo!!! Et je dois encore rajouter des lignes de données... Ca me pose probleme pour les sauvegardes, transferts de données (ex: Copier-Coller) et mouvement du fichier en questions.

Je me demandais si il n'y avait pas des trucs ou petites magouilles pour économiser des octets ou diminuer la taille du fichier.
Dans la meme veine: es-ce que les macros prennent beaucoup de place?

Merci d'avance.
A voir également:

11 réponses

Farfadet88 Messages postés 6295 Date d'inscription   Statut Membre Dernière intervention   1 370
 
Enlève les images s'il y en a. normalement les macros ne prennent pas énormément de place
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   406
 
dans ton fichier tu as plein de lignes dans les feuilles et aussi des macros ? quel genre de macro est ce ?
0
Kinslown Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   2
 
Mon fichier ne possède pas d'image. Mais effectivement mon fichier comporte beaucoup de lignes (plusieurs feuilles avec facile plus de 30000 lignes et une dizaine de colonnes)

Les macros font surtout de la recherche et de la copie.
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   406
 
tu peu essayer de copier/coller l'ensemble de tes lignes et macro dans un nouveau fichiers et enregistrer celui ci
normalement ca devrai réduire le poid du fichier car il n'y aura pas l'historique du fichier d'origine (sppécialité de la suite office, les copier/coller et autres traitement reste dans le fichier)
mais avec 30 000 lignes (soit 300 000 cellules) c'est normal que le fichier pèse lourd
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kinslown Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   2
 
Je vais essayer mais je savais que j'arriverais pas à le faire maigrir de jusqu'à 2 Mo :D
Mais chaque Mo gagné me facilite la vie.
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   406
 
sur 30 000 lignes, c'est pas possible de le ramener a 2 Mo ^^
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 759
 
Salut tout le monde,
100Mo!! Boudiou...
Vois ce lien : ici

FichierObèse-Commentaire-procédure-Laurent Longre
Il apporte un élément de réponse à tester. C'est sous forme de macro supprimant tout ce qui est inutile. Laurent Longre l'explique mieux que moi. Voici sa macro qui peux toujours servir :

Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String
On Error Resume Next
Calc = Application.Calculation
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = False
End With
For Each Sht In Worksheets
If Sht.UsedRange.Address Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Clear
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(,2)
If Not DCell Is Nothing Then _
Sht.Range(DCell, Sht.[IV1]).EntireColumn.Clear
End If
Rien = Sht.UsedRange.Address
End If
Next Sht
Application.StatusBar = False
Application.Calculation = Calc
End Sub


Sinon vois du côté de tes macros, possibilités d'allègement.
Ou encore scinder ton classeur en 2 : le classeur excel et le classeur macro...
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   406
 
par contre il manque un application.screenupdating.true a la fin

sinon ca a l'air utile comme macro
0
Kinslown Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   2
 
je vais regarder et voir ce que ca donne
merci pour l'info :]
0
Kinslown Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   2
 
j'ai fait un joli C/C de la macro et comme je comprend la synthaxe qu'a moitié, je n'arrive pas a déboguer la ligne qui commence par trois asterisque (notez que j'ai pas mis les astériques dans le code ^^).

Belgarion pourait tu m'expliquer ce que tu voulais dire par : "il manque un application.screenupdating.true a la fin "

EDIT: oui le fichier a été grassement nourris à la donné super calorique, mais comme il sert de base de donnée comparative pour la codification de réference de composante éléctronique. (je suis pas sûr d'avoir été clair :/ )

Merci d'avance

Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String
On Error Resume Next
Calc = Application.Calculation
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = False
End With
For Each Sht In Worksheets
***If Sht.UsedRange.Address Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Clear
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
If Not DCell Is Nothing Then _
Sht.Range(DCell, Sht.[IV1]).EntireColumn.Clear
End If
Rien = Sht.UsedRange.Address
End If
Next Sht
Application.StatusBar = False
Application.Calculation = Calc
End Sub
0
HUGO BASS Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à toutes et tous,

Je relance cet ancien post, car après avoir utilisé le code ci dessous copié et ci dessus cité, certes il fonctionne très bien mais j'ai remarqué le problème suivant.
La macro efface toutes les colonnes à partir de IV (L1C256) certainement ce qui était la limite du nombre de colonne maxi avant excel 2007.
malgré mes essais je n'arrive pas à adapter ce code pour tenir compte que mon fichier utilise des colonnes au delà de IV

Auriez vous une solution ?

Merci
Cordialement
Hugues

Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String
On Error Resume Next
Calc = Application.Calculation
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = False
End With
For Each Sht In Worksheets
      • If Sht.UsedRange.Address Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)

If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Clear
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
If Not DCell Is Nothing Then _
Sht.Range(DCell, Sht.[IV1]).EntireColumn.Clear
End If
Rien = Sht.UsedRange.Address
End If
Next Sht
Application.StatusBar = False
Application.Calculation = Calc
End Sub
0