Bonjour à tous ,
J'ai réussi à faire une macro qui marche super bien et je me suis rendu compte que la taille de mon classeur devenait trop grande à chaque fois que j'utilisais ma macro. J'ai fais des recherches et j'ai trouvé une macro appelé "diet" qui optimise la taille des classeurs après application de macros. Et du coup je suis passée de 212137 Ko à 9646 Ko !!!
Etant donné que je suis débutante, je ne comprends pas ce que cette macro fait pour diminuer autant la taille de mon classeur. Si quelqu'un de vous arrive à me l'expliquer. Merci
La macro diet est la suivante:
Sub macroDiet()
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 <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
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)
If Not DCell Is Nothing Then _
Sht.Range(DCell, Sht.[IV1]).EntireColumn.Delete
End If
Rien = Sht.UsedRange.Address
End If
Next Sht
Application.StatusBar = False
Application.Calculation = Calc
End Sub
J'ai réussi à faire une macro qui marche super bien et je me suis rendu compte que la taille de mon classeur devenait trop grande à chaque fois que j'utilisais ma macro. J'ai fais des recherches et j'ai trouvé une macro appelé "diet" qui optimise la taille des classeurs après application de macros. Et du coup je suis passée de 212137 Ko à 9646 Ko !!!
Etant donné que je suis débutante, je ne comprends pas ce que cette macro fait pour diminuer autant la taille de mon classeur. Si quelqu'un de vous arrive à me l'expliquer. Merci
La macro diet est la suivante:
Sub macroDiet()
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 <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
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)
If Not DCell Is Nothing Then _
Sht.Range(DCell, Sht.[IV1]).EntireColumn.Delete
End If
Rien = Sht.UsedRange.Address
End If
Next Sht
Application.StatusBar = False
Application.Calculation = Calc
End Sub