Sub Nettoie()
'Laurent Longre mpfe, mise en forme GeeDee
    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