Cure d'amaigrissement

chris

XLDnaute Barbatruc
Bonjour

Il me semble me souvenir que quelqu'un avait donné des solutions pour réduire la taille des classeurs qui se mettent à grossir anormalement.
En modifiant juste la disposition des champs dans 4 TCD mon classeur a pris 12 Mo : ça ma paraît beaucoup.

J'ai cherché poids, taille, lourd etc dans l'historique du forum mais n'ai pas retrouvé ces fils que j'ai vu il y a déjà pas mal de temps.

Donc si quelqu'un sait me retrouver le régime weight watcher Excel...

Merci d'avance

PS : ce n'est pas un gag pour la saison des maillots sans kilos superflus !
 

chris

XLDnaute Barbatruc
Bonjour Dugenou

Merci du tuyau karcher :)
Cependant d'après la description, cela semble limité aux cellules inutiles. De ce coté là mes feuilles sont clean.

Je crains que le problème ne soit dans les TCD qui stockent plein de choses même si on nettoie les données source.

Donc je cours toujours après mon régime..

Message édité par: chris, à: 03/06/2005 19:02
 

pat1545.

XLDnaute Accro
Voilà un code du grand maitre Laurent Longre qui doit un peu améliorer la taille :

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



Patrick
 

Gael

XLDnaute Barbatruc
Bonjour Chris,

Je te joins la réponse que j'avais fait dans un autre fil récent en espérant que cela peut t'aider:

J'ai souvent rencontré ce problème sur des fichiers utilisateurs divers mais ne l'ai jamais clairement expliqué.

On s'en apercoit en ouvrant une feuille qui ne contient que peu de choses et dont le curseur de l'ascenceur est réduit comme si la feuille utilisait 65000 lignes.

La seule solution que j'ai trouvé est de créer une nouvelle feuille vierge, de copier dedans les données de la feuille trop importante, de reformater les colonnes etc.. puis de supprimer purement et simplement la feuille initiale et d'enregistrer le fichier.

Bien s&ucirc;r, il ne faut pas faire 'Copier une feuille' car la copie aurait le même défaut que l'original.

C'est un peu lourd surtout si les formatages sont très nombreux mais on peut faire des copier/collage spécial format seulement puis remettre les données après...

Par contre c'est généralement très efficace.

@+

Gael
 

chris

XLDnaute Barbatruc
Bonjour
Merci à tous.
Mais comme je l'ai répondu à Dugenou mes feuilles sont clean et donc les solutions proposées ne changent rien.
Ce sont des sources de TCD, où seules les données brutes ont été copiées sur des feuilles vierges et des TCD.
Le problème vient des TCD.
En déplacant simplement un champ du mode ligne au mode page sur un TCD le fichier prend 12 MO.
Donc je continue à chercher.
 
C

coox

Guest
Salut Cris,

J'ai exactement le même problème que toi...

Qd je modifie le chemin de ma source de données dans mes TCD, le fichier prend un poid énorme !!!

Je ne trouve pas de solution, par contre je suis preneur si tu en as trouvé une...

Merci d'avance...
 

MichelXld

XLDnaute Barbatruc
bonjour à toutes et à tous

chere Chris ,meme si cela ne résoudra par tous tes problemes , j'espere que cette procedure de Debra Dalgleish pourra t'aider à détruire les anciennes étiquettes dans un TCD


Sub DeleteOldItemsWB()
'gets rid of unused items in PivotTable
' Debra Dalgleish - based on MSKB (202232)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim i As Integer

On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
For Each pf In pt.PivotFields
For Each pi In pf.PivotItems
If pi.RecordCount = 0 And _
Not pi.IsCalculated Then
pi.Delete
End If
Next
Next
Next
Next
End Sub



Et une autre solution , à partir d'Excel 2002 uniquement :

Sub DeleteMissingItems2002()
'prevents unused items in XL 2002 PivotTable
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables.Item(1)
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
End Sub



bonne journée
MichelXld
 

Statistiques des forums

Discussions
312 520
Messages
2 089 276
Membres
104 083
dernier inscrit
hecko