[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
HUGO BASS Messages postés 20 Date d'inscription Statut Membre Dernière intervention - 4 avril 2015 à 12:52
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
- Fiche de pointage excel - Télécharger - Tableur
- Reduire taille clavier iphone - Guide
11 réponses
dans ton fichier tu as plein de lignes dans les feuilles et aussi des macros ? quel genre de macro est ce ?
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.
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
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.
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...
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
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