Nettoie( ) marche bien sur XP pro et XL2003.
L'autre Reconstruit( )j'ai eu un souci, mais je ne sais plus lequel.
Quelle est ta config ?
--
à+twinley
"Christian" <anon...@discussions.microsoft.com> a écrit dans le message de
news:129801c4ba74$96da7b50$a301...@phx.gbl...
--
à+twinley
"Christian" <anon...@discussions.microsoft.com> a écrit dans le message de
news:0c3c01c4ba7e$d3a10f90$a501...@phx.gbl...
Vérifie dans le VBE outils références. J'ai les cases cochées sur :
Visual Basic for applications
Microsoft excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object library
Je ne sais pas pourquoi j'ai deux fois la même références...un va dans
office11\excel.exe et l'autre
fichiers communs\microsoft Shared
Mais bon, après je n'ai plus d'idées. Dis moi le résultat.
--
à+twinley
"Christian" <anon...@discussions.microsoft.com> a écrit dans le message de
news:133301c4ba93$94bd0170$a301...@phx.gbl...
Voici un copié-collé de ce qui est dans mon classeur.
La sub est dans un module standart. Vérifie ce point, au cas ou.
Efface les deux anciennes et met celle -ci.
Vérifie que tu n'as pas de ligne en rouge...
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
--
à+twinley
"Christian" <anon...@discussions.microsoft.com> a écrit dans le message de
news:17ae01c4bb1b$eee28430$a301...@phx.gbl...
--
à+twinley
"Christian" <anon...@discussions.microsoft.com> a écrit dans le message de
news:077401c4bb2d$407c8000$a401...@phx.gbl...
Attention : comme cela est signalé à divers endroits dans le site, la
coupure intempestive des lignes, liée soit à la mise en forme ici même
(d'où sont copié-collé beaucoup de choses) soit à celle des pages du
site entraine des problèmes.
En l'occurence il ne faut pas qu'il te reste une seule ligne en rouge
quand tu copies dans VBE. Si c'est le cas, enlève le retour chariot qui
précède la ligne en rouge.
Il ne faut pas non plus interrompre les déclarations de variable :
Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String,
Avant As Double, plage As Range
toute cette ligne doit être en un seul morceau.
Quand tu as une erreur de compil, excel te signale où elle se trouve.
Regarde dans ce cas si ce n'est pas une ligne coupée qui est
responsable. Je t'affirme que cette macro fonctionne très bien !
allez, retournes-y ! :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
on 25/10/2004 11:25:
C'est sympa de lui redonner la pêche.
Le copié-collé que j'ai donné vient d'un de mes classeur. Il est compilé
sans erreur chez moi.
Donc il devrait passer chez lui. J'ai proposé cette manip pour être sur
qu'il n'y a pas de lignes rouges.
C'est vrai que Christian n'en dit pas trop sur ses manips.
Il n'a pas confirmé l'absence de ligne rouge, ni l'install dans un module
standard.
--
à+twinley
"Misange" <mis...@devinez-ou.net> a écrit dans le message de
news:e8RI5G1u...@TK2MSFTNGP09.phx.gbl...
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
on 26/10/2004 14:14:
--
à+twinley
"Misange" <mis...@devinez-ou.net> a écrit dans le message de
news:ebM8771u...@TK2MSFTNGP11.phx.gbl...
--
à+twinley
"Christian" <anon...@discussions.microsoft.com> a écrit dans le message de
news:09fa01c4bb78$cb41e720$a401...@phx.gbl...
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:%23T6B$j3uEH...@TK2MSFTNGP09.phx.gbl...
--
à+twinley
"sabatier" <biscotteUnScud...@wanadoo.fr> a écrit dans le message
de news:%23KER2H5...@TK2MSFTNGP12.phx.gbl...