OVH Cloud OVH Cloud

classeur trop gros

4 réponses
Avatar
Christophe
Bonjour,
un classeur contenant 1 feuille par mois s'est mis récemment à ramer
terriblement (CPU à 100%, processus EXCEL.EXE).
J'ai éclaté ce classeur en 12 et j'obtiens 11 classeurs d'environ 500 Ko, et
celui du mois d'août qui fait presque 10 Mo !
C'est maintenant le seul à ramer, je ne comprends pas cette taille : il
contient plutôt moins de données que les autres et j'y ai fait un
Copier/Collage spécial (Valeurs).
Il ne contient donc plus de formules et pas de macro. J'ai un anti-virus
(Symantec) qui ne couine pas... bref, je ne sais pas trop où ni quoi chercher.
Merci pour votre aide !

4 réponses

Avatar
J
Bonjour
tu as du tripatouiller par ci par la dans ta feuille, et il y traîne des
scories +/- visibles.
De Laurent Longre, la macro suivant devrait mettre au régime ton fichier
@+
J@@ :
'**************
Sub AllegeToutesFeuils() 'LL Nettoie
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

'************

Bonjour,
un classeur contenant 1 feuille par mois s'est mis récemment à ramer
terriblement (CPU à 100%, processus EXCEL.EXE).
J'ai éclaté ce classeur en 12 et j'obtiens 11 classeurs d'environ 500 Ko, et
celui du mois d'août qui fait presque 10 Mo !
C'est maintenant le seul à ramer, je ne comprends pas cette taille : il
contient plutôt moins de données que les autres et j'y ai fait un
Copier/Collage spécial (Valeurs).
Il ne contient donc plus de formules et pas de macro. J'ai un anti-virus
(Symantec) qui ne couine pas... bref, je ne sais pas trop où ni quoi chercher.
Merci pour votre aide !


Avatar
Christophe
merci pour la macro, je viens de la passer mais rien de mieux... Le fichier a
pris 2 kO de plus (normal, la macro...) et c'est tout.

Autre symptôme qui aidera peut-être à diagnostiquer le mal : lorsque j'ouvre
le classeur, le CPU est donc à 100% pendant environ 1 minute et un autre
bouton EXCEL apparaît dans la barre de tâches (Windows XP). Dans la liste des
processus, il s'appelle "Microsoft Excel - 05_août.xls", alors que le
classeur, lui, a pour nom de processus son simple nom : 05_août.xls.
Lorsque le CPU retombe, si je clique sur ce bouton, il disparaît, tout
simplement...

Enfin, j'ai copié cette "petite feuille" (500 lignes, une douzaine de
colonnes) pour la coller dans un nouveau classeur : boum ! CPU à 100%,
nouveau classeur de 10 Mo...

On dirait que ce classeur contient un objet quelconque je ne sais où, qui le
fait ramer (pas seulement au démarrage, mais aussi parfois simplement en
utilisant la molette...).

Merci pour votre aide !



Bonjour
tu as du tripatouiller par ci par la dans ta feuille, et il y traîne des
scories +/- visibles.
De Laurent Longre, la macro suivant devrait mettre au régime ton fichier
@+
J@@ :
'**************
Sub AllegeToutesFeuils() 'LL Nettoie
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



Avatar
Oliv'
*Christophe que je salut a écrit *:
merci pour la macro, je viens de la passer mais rien de mieux... Le
fichier a pris 2 kO de plus (normal, la macro...) et c'est tout.

Autre symptôme qui aidera peut-être à diagnostiquer le mal : lorsque
j'ouvre le classeur, le CPU est donc à 100% pendant environ 1 minute
et un autre bouton EXCEL apparaît dans la barre de tâches (Windows
XP). Dans la liste des processus, il s'appelle "Microsoft Excel -
05_août.xls", alors que le classeur, lui, a pour nom de processus son
simple nom : 05_août.xls.
Lorsque le CPU retombe, si je clique sur ce bouton, il disparaît, tout
simplement...

Enfin, j'ai copié cette "petite feuille" (500 lignes, une douzaine de
colonnes) pour la coller dans un nouveau classeur : boum ! CPU à 100%,
nouveau classeur de 10 Mo...

On dirait que ce classeur contient un objet quelconque je ne sais où,
qui le fait ramer (pas seulement au démarrage, mais aussi parfois
simplement en utilisant la molette...).



Si les données le permettent essaye d'enregistrer sous ton fichier en type
.csv
et de le réouvrir puis enregistrer en classeur xls

ca marche ?


--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Bonjour
tu as du tripatouiller par ci par la dans ta feuille, et il y traîne
des scories +/- visibles.
De Laurent Longre, la macro suivant devrait mettre au régime ton
fichier @+
J@@ :
'**************
Sub AllegeToutesFeuils() 'LL Nettoie
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




Avatar
Christophe
bonne idée, merci !




*Christophe que je salut a écrit *:
merci pour la macro, je viens de la passer mais rien de mieux... Le
fichier a pris 2 kO de plus (normal, la macro...) et c'est tout.

Autre symptôme qui aidera peut-être à diagnostiquer le mal : lorsque
j'ouvre le classeur, le CPU est donc à 100% pendant environ 1 minute
et un autre bouton EXCEL apparaît dans la barre de tâches (Windows
XP). Dans la liste des processus, il s'appelle "Microsoft Excel -
05_août.xls", alors que le classeur, lui, a pour nom de processus son
simple nom : 05_août.xls.
Lorsque le CPU retombe, si je clique sur ce bouton, il disparaît, tout
simplement...

Enfin, j'ai copié cette "petite feuille" (500 lignes, une douzaine de
colonnes) pour la coller dans un nouveau classeur : boum ! CPU à 100%,
nouveau classeur de 10 Mo...

On dirait que ce classeur contient un objet quelconque je ne sais où,
qui le fait ramer (pas seulement au démarrage, mais aussi parfois
simplement en utilisant la molette...).



Si les données le permettent essaye d'enregistrer sous ton fichier en type
..csv
et de le réouvrir puis enregistrer en classeur xls

ca marche ?


--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Bonjour
tu as du tripatouiller par ci par la dans ta feuille, et il y traîne
des scories +/- visibles.
De Laurent Longre, la macro suivant devrait mettre au régime ton
fichier @+
J@@ :
'**************
Sub AllegeToutesFeuils() 'LL Nettoie
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