Une macro qui permet de rendre un classeur moins gros. Mais pourquoi ??

jihane

XLDnaute Junior
Bonjour à tous :D,

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
 

Jam

XLDnaute Accro
Re : Une macro qui permet de rendre un classeur moins gros. Mais pourquoi ??

bonjour jihane, pierrejean,

Petite précision complémentaire: Pour chaque cellule du classeur Excel doit stocker des informations (couleur, formule, bordure, etc...). Donc lorsqu'on sélectionne une colonne ou un ligne pour appliquer une couleur, c'est plusieurs centaines voire millions de cellules qu'Excel doit traiter alors qu'elles ne comportent aucune information liée au fonctionnement du classeur.
Cette macro regarde dans chaque ligne/colonne s'il y a des cellules utilisée ou non et les efface si nécessaire. Cela diminue donc la quantité d'information à stocker par Excel et par conséquent la taille du classeur.

Cdlt,
 

pierrejean

XLDnaute Barbatruc
Re : Une macro qui permet de rendre un classeur moins gros. Mais pourquoi ??

Re

Exact Jam
A ceci prés que ce ne sont pas des cellules individuelles qui sont explorées mais des lignes et colonnes

les lignes de code active sont:
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Delete
Sht.Range(DCell, Sht.[IV1]).EntireColumn.Delete

les autres servant a définir ces lignes et colonnes
 

Jam

XLDnaute Accro
Re : Une macro qui permet de rendre un classeur moins gros. Mais pourquoi ??

Re

Pas tout à fait d'accord pierrejean...c'est bien dans chaque cellule de la ligne/colonne que la recherche est effectuée :
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)

:eek:
 

pierrejean

XLDnaute Barbatruc
Re : Une macro qui permet de rendre un classeur moins gros. Mais pourquoi ??

Re

Cette ligne recherche (Find) dans toutes les cellules (Cells) la dernière non remplie
Et encore uniquement si la cellule A1 n'est pas vide
Le résultat est une unique cellule et non le cumul des cellules non utilisées
 

Discussions similaires

Réponses
0
Affichages
133

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali