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
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 '-------------------------------------------------
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" <guy72@bonjour.tous> a écrit dans le message de news:
%23kReMbtLJHA.4600@TK2MSFTNGP06.phx.gbl...
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" <michdenis@hotmail.com> a écrit dans le message de news:
uj7mp7sLJHA.276@TK2MSFTNGP02.phx.gbl...
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
'-------------------------------------------------
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 '-------------------------------------------------
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 '-------------------------------------------------
D'accord, ça correspond à ça, mais c'est pas bien grave.
--
Cordialement
Guy
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OzMeEftLJHA.740@TK2MSFTNGP03.phx.gbl...
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" <guy72@bonjour.tous> a écrit dans le message de news:
%23kReMbtLJHA.4600@TK2MSFTNGP06.phx.gbl...
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" <michdenis@hotmail.com> a écrit dans le message de news:
uj7mp7sLJHA.276@TK2MSFTNGP02.phx.gbl...
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
'-------------------------------------------------
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 '-------------------------------------------------