[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
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.
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:
- [EXCEL] Reduire/Minimiser la taille d'un fich
- Comment réduire la taille d'un fichier - Guide
- Reduire taille photo - Guide
- Liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Comment calculer la moyenne sur excel - Guide
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
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
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
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 ?
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
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.
Les macros font surtout de la recherche et de la copie.
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
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
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
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
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.
Mais chaque Mo gagné me facilite la vie.
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
16 févr. 2010 à 11:39
sur 30 000 lignes, c'est pas possible de le ramener a 2 Mo ^^
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
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 :
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...
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...
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
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
sinon ca a l'air utile comme macro
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
16 févr. 2010 à 15:27
je vais regarder et voir ce que ca donne
merci pour l'info :]
merci pour l'info :]
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
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
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
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
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 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
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