Fichier Excel très volumineux après exécution macro

Bonjour à tous,

Dans un fichier excel de 327ko, sur lequel je travaille actuellement, je constate une très forte augmentation de la taille du fichier après l'exécution d'une des macros (Resultats_inv_tot_frt()). Le fichier passe à 85000Ko!!!!!???!!!

Bien sur la macro s’exécute lentement. Elle a pourtant été utilisé pendant plus de 6 mois sans problème ni augmentation de la taille du fichier de cet ordre.

En grattant un peu j'ai pu me rendre compte qu'en supprimant les feuilles remplies automatiquement par la macro (feuilles : "Res_inv_tot" et "Res_inv_frt") la taille du fichier redevient normale. Ces feuilles ne comportent cependant aucune formule...

Bref je ne sais pas d'où viens cette augmentation folle de la taille du fichier et comment y remédier.

Quelqu'un aurait-il une idée?

Merci d'avance

Ci-joint le fichier, la macro en question est sur le module 2 (les autres macros du module 2 sont du même ordre).

Pour illustrer mon propos. Le fichier Typo_AL_v4 ci joint comprend exactement la même macro (Res_inv_bloc_frt) (à un changement de nom feuille près), qui s’exécute en 2 sec et après enregistrement ne fait que 600ko (alors qu'il a plus de feuilles dont certaines avec formules)

La macro est assez longue je ne peux pas la copier ici, mais je ne comprends vraiment pas cette lenteur et cette taille de fichier alors qu'il n'y a eu aucun changement majeur entre les 2 versions fournies.

Aidez moi


Oups...le fichier en question

bonjour,

Une première piste :

Juste avant de sauvegarder et quitter le classeur, puisque la suppression des feuilles semble bien fonctionner tu pourrais essayer de

  • Supprimer toutes les lignes vides des feuilles en question
  • Supprimer toutes les colonnes vides des feuilles en question
Utilise cette macro (a coller dans "ThisWorkbook"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim iR&, iC%
With Worksheets("Res_inv_tot")
   iR = .Cells(.Rows.Count, 1).End(xlUp)(2).Row
   .Range("A" & iR & ":A1048576").EntireRow.Delete
   iC = .Cells(1, .Columns.Count).End(xlToLeft).Column + 1
   .Range(.Cells(1, iC), .Cells(1, 16384)).EntireColumn.Delete
End With
With Worksheets("Res_inv_frt")
   iR = .Cells(.Rows.Count, 1).End(xlUp)(2).Row
   .Range("A" & iR & ":A1048576").EntireRow.Delete
   iC = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
   .Range(.Cells(1, iC), .Cells(1, 16384)).EntireColumn.Delete
End With
End Sub

Et si ça ne marche pas on verra pour la 2ème possibilité.

A+

Hello à tous,

Je pense qui serait intéressant pour toi de savoir où est la dernière cellule occupée réellement ou qui l'a été (ce n'est pas la même chose)

Dans une feuille vierge ou dans ton classeur, essaie en mettant un chiffre en ZZ20000 , puis tu l'effaces ensuite CTRL Home pour aller en haut et CTRL END pour aller en bas et là même si tu effaces les lignes et colonnes vides, il retournera TOUJOURS là...

Moi, je mets en général un code de l'ex MVP LAURENT LONGRE que voici:

Sub NettoieEtDerniereCellule()     ' Laurent Longre 2000
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.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

Merci pour vos réponses!

Le code de Laurent LONGRE posté par patrick1957 semble totalement répondre à mon besoin

Merci Encore

Bonne journée !

Rechercher des sujets similaires à "fichier tres volumineux execution macro"