Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier Obèse

12 réponses
Avatar
Guy72
Bonjour,
Je voulais voir si mon fichier avait besoin d'un régime.
J'avais gardé sous le coude cette macro (je ne sais pas ou je l'ai
récupéré).
Mais ça ne fonctionne pas.
Je suis arrêté à la ligne "Next Sht"

Sub Nettoie()
' Macro enregistrée 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("*", , , , xlByRows, 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

Pouvez-vous voir ce qui cloche, ou si vous avez la même chose en magasin ?
Merci de votre aide.
--
Cordialement
Guy

2 réponses

1 2
Avatar
michdenis
La procédure identifie la dernière ligne occupée soit par une
constante ou une formule et supprime toutes les autres. Ces
dernières incluent toutes les cellules ayant reçu simplement
un format de cellules et qui sont à l'extérieur de la dernière
ligne occupée. Le processus est le même en ce qui concerne
les colonnes.

DAns le cas où tu voudrais que la procédure s'occupe aussi
simplement des cellules contenant un format.... comment doit-on
dire ou signifier à excel, quelles cellules (lignes ou colonnes)
il doit éliminer et quelles cellules il doit conserver ?





"Guy72" a écrit dans le message de news:
%
Bonjour et Merci aussi "michdenis"
ça fonctionne, je suis passé de 2174 ko à 93ko (6ko de moins que Modeste).
Parc contre même problème.
ça me supprime le format d'une colonne (BK1) et me change la largeur des
colonnes
de BK1 à CK1.
--
Cordialement
Guy
"michdenis" a écrit dans le message de news:

Il y a encore une petite coquille sur la procédure transmise.

Correction apportée : ceci devrait fonctionner.

'-------------------------------------------------
Sub Nettoie()
' Macro enregistrée Laurent Longre
Dim Sht As Worksheet, DCell As Range
Dim DxCell As Range
Dim 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("*", _
, xlFormulas, , xlByRows, xlPrevious)(2)
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)). _
EntireRow.Clear
Set DCell = Nothing
Set DxCell = Sht.Cells.Find("*", , xlFormulas, _
, xlByColumns, xlPrevious)(2)

If Not DxCell Is Nothing Then
Sht.Range(DxCell.Offset(, 1), Sht.[IV1]). _
EntireColumn.Clear
End If
Rien = Sht.UsedRange.Address
End If
End If
Next Sht
Application.StatusBar = False
Application.Calculation = Calc
End Sub
'-------------------------------------------------






Avatar
Guy72
D'accord, ça correspond à ça, mais c'est pas bien grave.
--
Cordialement
Guy

"michdenis" a écrit dans le message de news:

La procédure identifie la dernière ligne occupée soit par une
constante ou une formule et supprime toutes les autres. Ces
dernières incluent toutes les cellules ayant reçu simplement
un format de cellules et qui sont à l'extérieur de la dernière
ligne occupée. Le processus est le même en ce qui concerne
les colonnes.

DAns le cas où tu voudrais que la procédure s'occupe aussi
simplement des cellules contenant un format.... comment doit-on
dire ou signifier à excel, quelles cellules (lignes ou colonnes)
il doit éliminer et quelles cellules il doit conserver ?





"Guy72" a écrit dans le message de news:
%
Bonjour et Merci aussi "michdenis"
ça fonctionne, je suis passé de 2174 ko à 93ko (6ko de moins que Modeste).
Parc contre même problème.
ça me supprime le format d'une colonne (BK1) et me change la largeur des
colonnes
de BK1 à CK1.
--
Cordialement
Guy
"michdenis" a écrit dans le message de news:

Il y a encore une petite coquille sur la procédure transmise.

Correction apportée : ceci devrait fonctionner.

'-------------------------------------------------
Sub Nettoie()
' Macro enregistrée Laurent Longre
Dim Sht As Worksheet, DCell As Range
Dim DxCell As Range
Dim 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("*", _
, xlFormulas, , xlByRows, xlPrevious)(2)
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)). _
EntireRow.Clear
Set DCell = Nothing
Set DxCell = Sht.Cells.Find("*", , xlFormulas, _
, xlByColumns, xlPrevious)(2)

If Not DxCell Is Nothing Then
Sht.Range(DxCell.Offset(, 1), Sht.[IV1]). _
EntireColumn.Clear
End If
Rien = Sht.UsedRange.Address
End If
End If
Next Sht
Application.StatusBar = False
Application.Calculation = Calc
End Sub
'-------------------------------------------------










1 2