Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" a écrit dans le message de news:
%
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
sur
la droite
Je fais pourtant le même genre de manip sur les lignes et cela fonctionne
parfaitement...
Une idée?
Merci
Alain
Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" <desaivresanospam@free.fr> a écrit dans le message de news:
%23ZwwjqaMHHA.4916@TK2MSFTNGP06.phx.gbl...
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
sur
la droite
Je fais pourtant le même genre de manip sur les lignes et cela fonctionne
parfaitement...
Une idée?
Merci
Alain
Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" a écrit dans le message de news:
%
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
sur
la droite
Je fais pourtant le même genre de manip sur les lignes et cela fonctionne
parfaitement...
Une idée?
Merci
Alain
Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" a écrit dans le message de news:
%
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
sur
la droite
Je fais pourtant le même genre de manip sur les lignes et cela fonctionne
parfaitement...
Une idée?
Merci
Alain
Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" <desaivresanospam@free.fr> a écrit dans le message de news:
%23ZwwjqaMHHA.4916@TK2MSFTNGP06.phx.gbl...
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
sur
la droite
Je fais pourtant le même genre de manip sur les lignes et cela fonctionne
parfaitement...
Une idée?
Merci
Alain
Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" a écrit dans le message de news:
%
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
sur
la droite
Je fais pourtant le même genre de manip sur les lignes et cela fonctionne
parfaitement...
Une idée?
Merci
Alain
Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long
Dim 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 "
'---------------------------------------------------------
----
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 :" & vbCrLf & _
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
"Alain79" a écrit dans le message de news:
%
Merci mais pas assez malin pour entrevoir l'idée... En tout cas avec
Option
Explicit en entrée le code proposé placé dans le classeur en beforesave ne
passe pas la compilation... Alain
"MichDenis" wrote in message
news:Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" a écrit dans le message de news:
%
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont
situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé
surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
surla droite
Je fais pourtant le même genre de manip sur les lignes et cela
fonctionne
parfaitement...
Une idée?
Merci
Alain
Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long
Dim 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 GeeDee@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 :" & vbCrLf & _
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
"Alain79" <desaivresanospam@free.fr> a écrit dans le message de news:
%23seEc5aMHHA.1872@TK2MSFTNGP04.phx.gbl...
Merci mais pas assez malin pour entrevoir l'idée... En tout cas avec
Option
Explicit en entrée le code proposé placé dans le classeur en beforesave ne
passe pas la compilation... Alain
"MichDenis" <michdenis@hotmail.com> wrote in message
news:ukFH5yaMHHA.4916@TK2MSFTNGP06.phx.gbl...
Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" <desaivresanospam@free.fr> a écrit dans le message de news:
%23ZwwjqaMHHA.4916@TK2MSFTNGP06.phx.gbl...
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont
situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé
surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
sur
la droite
Je fais pourtant le même genre de manip sur les lignes et cela
fonctionne
parfaitement...
Une idée?
Merci
Alain
Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long
Dim 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 "
'---------------------------------------------------------
----
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 :" & vbCrLf & _
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
"Alain79" a écrit dans le message de news:
%
Merci mais pas assez malin pour entrevoir l'idée... En tout cas avec
Option
Explicit en entrée le code proposé placé dans le classeur en beforesave ne
passe pas la compilation... Alain
"MichDenis" wrote in message
news:Ne le dit pas à personne et essaie ceci,
si tu n'es pas satisfait... on passera à quelque chose d'autre...!
Sub test()
For Each sh In Worksheets
sh.UsedRange
Next
End Sub
"Alain79" a écrit dans le message de news:
%
Bonjour
Via vba, je delete les colonnes qui ne contienne rien et qui sont
situées
sur la gauche d'une feuille
Mon objectif étant de réduire la zone UsedRange au strict utilisé
surtout
que je lance ensuite un Pivot table sur la zone...
Mais rien n'y fait le UsedRange comporte tjrs qcq colonnes vides situées
surla droite
Je fais pourtant le même genre de manip sur les lignes et cela
fonctionne
parfaitement...
Une idée?
Merci
Alain