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

Fermé
Kinslown Messages postés 25 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 12 juillet 2010 - 16 févr. 2010 à 10:06
HUGO BASS Messages postés 20 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015 - 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 lundi 28 janvier 2008 Statut Membre Dernière intervention 4 février 2025 1 370
16 févr. 2010 à 10:28
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 mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
16 févr. 2010 à 10:33
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 lundi 14 décembre 2009 Statut Membre Dernière intervention 12 juillet 2010 2
16 févr. 2010 à 11:08
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 mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
16 févr. 2010 à 11:11
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 lundi 14 décembre 2009 Statut Membre Dernière intervention 12 juillet 2010 2
16 févr. 2010 à 11:19
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 mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
16 févr. 2010 à 11:39
sur 30 000 lignes, c'est pas possible de le ramener a 2 Mo ^^
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
16 févr. 2010 à 12:46
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 mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
16 févr. 2010 à 12:57
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 lundi 14 décembre 2009 Statut Membre Dernière intervention 12 juillet 2010 2
16 févr. 2010 à 15:27
je vais regarder et voir ce que ca donne
merci pour l'info :]
0
Kinslown Messages postés 25 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 12 juillet 2010 2
16 févr. 2010 à 15:37
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 dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015
4 avril 2015 à 12:52
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