Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nettoyer un fichier

1 réponse
Avatar
Warrio
Bonjour,



Y aurait-il un moyen de nettoyer un fichier Excel? car le fichier en
question est énorme et fait 24 Mo. Il ne contient plus aucune colonne vide à
part une seule, et dès que je touche une cellule de cette colonne, Excel
crache et doit se ferme.



dans Access, il existe la fonction 'Clean and repaire' qui réinitialise les
variables système et vide le cache.

Existe-il une fonction similaire dans Excel?



Merci pour toute suggestion

1 réponse

Avatar
MichDenis
Essaie cette procédure, elle est de Laurent Longre

'===================================== Sub Nettoie()

Dim Sht As Worksheet, DCell As Range, Calc As Long
Dim Rien As String, Avant As Double, plage As Range
On Error Resume Next
Calc = Application.Calculation 'Mémorisation de l'État de recalcul
'--------------------------------------------------------

MsgBox "Pour le classeur actif : " _
& Chr(10) & ActiveWorkbook.FullName _
& Chr(10) & "dans chaque feuille de calcul" _
& Chr(10) & "recherche la zone contenant des données, " _
& Chr(10) & "réinitialise la derni re cellule utilisée" _
& Chr(10) & "et optimise la taille du fichier Excel ", _
vbInformation, "d'après LL par "
'---------------------------------------------------------

MsgBox "Taille initiale de ce classeur en octets" _
& Chr(10) & FileLen(ActiveWorkbook.FullName), _
vbInformation, ActiveWorkbook.FullName
'------------------------------------------------------
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = True
End With
'-------------------- le traitement
For Each Sht In Worksheets
Avant = Sht.UsedRange.Cells.Count
Application.StatusBar = Sht.Name & "-" & Sht.UsedRange.Address
'-------------------Traitement de la zone trouv e
If Sht.UsedRange.Address <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
'----------------Suppression des lignes inutilis es
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Delete
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
'----------------Suppression des colonnes inutilis es
If Not DCell Is Nothing Then Sht.Range(DCell, Sht.[IV1]).EntireColumn.Delete
End If
Rien = Sht.UsedRange.Address
End If
ActiveWorkbook.Save
'---------------------Message pour la feuille trait e
MsgBox "Nom de la feuille de calcul :" & vbCrLf & _
Chr(10) & Sht.Name & _
Chr(10) & Format(Sht.UsedRange.Cells.Count / Avant, "0.00%") & _
" de la taille initiale", _
vbInformation, ActiveWorkbook.FullName
Next Sht
'--------------------Message fin de traitement
MsgBox "Taille optimis e de ce classeur en octets " & _
Chr(10) & FileLen(ActiveWorkbook.FullName), vbInformation, _
ActiveWorkbook.FullNameActive
'--------------------
Application.StatusBar = False
Application.Calculation = Calc
End Sub
'=====================================




"Warrio" a écrit dans le message de news:
45953d74$0$3861$
Bonjour,



Y aurait-il un moyen de nettoyer un fichier Excel? car le fichier en
question est énorme et fait 24 Mo. Il ne contient plus aucune colonne vide à
part une seule, et dès que je touche une cellule de cette colonne, Excel
crache et doit se ferme.



dans Access, il existe la fonction 'Clean and repaire' qui réinitialise les
variables système et vide le cache.

Existe-il une fonction similaire dans Excel?



Merci pour toute suggestion