Je gère un classeur Excel de contrôle de gestion assez volumineux ( 50
feuilles ).
Mon pb est le suivant:
Toutes les fins de mois , j'enregistre définitivement mon fichier avant d'en
faire une copie portant comme nom de fichier le nom du mois suivant.
Cette copie étant faite, je ré-initialise ce nouveau fichier en le rendant
vierge de toutes données .
Or chaque fichier est plus lourd de 2 Mo tous les mois (le premier remontant
à 1 an faisait 20 Mo; j'arrive maintenant à 45 Mo), alors que tous les mois
je saisi approximativement le même nombre de données .
Quel est ce mystère et comment redonner maintenant un petit coup de régime à
mon fichier obèse actuel?
Merci à tous.
Franck
"Franck" <franck...@carabosse.fr> a écrit dans le message de news:
uj8#rBkhCHA.1148@tkmsftngp11...
En plus de l'excellent conseil de Papou, je te suggère, une fois allégé,
d'enregistrer le fichier vierge en tant que modèle. Pour cela, tu fais un
enregistrer sous/format/modèle et tu n'auras plus qu'à le sélectionner
lorsque tu voudras créer un nouveau fichier.
Bernard 8°)
dans l'article u7P0yOkhCHA.2448@tkmsftngp11, Papou à
TrucMachinp...@tibco.fr a écrit le 7/11/02 10:56 :
"Papou" <TrucMachinp...@tibco.fr> a écrit dans le message news:
u7P0yOkhCHA.2448@tkmsftngp11...
"Bob" <b.oll...@wanadoo.fr> a écrit dans le message news:
B9EFFE2B.7B2%b.oll...@wanadoo.fr...
"Franck" <franck...@carabosse.fr> a écrit dans le message de news:
#hwmqzlhCHA.1952@tkmsftngp09...
Dans Excel tu fais Alt + F11
Menu Insertion, Module et tu colles ci-dessous
Tu retournes dans Excel, Outils Macros
et tu exécutes la macro Nettoie
et là tu admire le travail !
Modeste GeeDee
HTH
G&D
@+
'=======================================
Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long, 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 Gee...@m6net.fr"
'---------------------------------------------------------
----
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 :" _
& 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