Erreur inattendue - Exception de HRESULT
par Bruno: Pourquoi chercher plus compliqué
parce que ça ne fonctionne pas sur ton fichier
Ah oui, tiens
Bizarrement sur cette feuille Ctrl+Fin amène en colonne L, qui est vide.
Il faut supprimer cette colonne, enregistrer le fichier et il redevient d'aplomb.
Enfin sur la feuille... Car vba continue à voir un dernier saut de page en L
J'ai bien commencé à ajouter un patch mais finalement je crains que ça n'ajoute une autre erreur dans des cas non détectés actuellement.
On ne peut pas se baser sur la dernière cellule utilisée recherchée avec .find car elle peut avoir un texte à imprimer qui déborde sur la colonne suivante.
Je pense que le mieux est de reconstruire sur un classeur neuf. Celui-ci a dû être trituré avec les zones d'impression ou autre avec les essais
eric
Edit : j'ai trouvé. Oh purée, c'est vicieux.
Il faut ré-afficher le quadrillage, et là on voit que la ligne 24 a le . et un bout du s qui déborde en L.
Il suffit d'élargir J (élargir K marche moins bien, va comprendre charles).
Il reste le pb du Ctrl+Fin qui pour moi n'est pas catholique
Salut eriiic
Ne t'embête pas,
Perso j'utilise l'outil "Nettoyage de classeur" que j'ai d'ailleurs adapté pour ne nettoyer que la feuille active
Sub Nettoie()
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 <a href="mailto:GeeDee@m6net.fr">GeeDee@m6net.fr</a>"
'-------------------------------------------------------------
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 SubA+
Tu as lu jusqu'au bout ?
C'est parce que ta ligne 24 est trop longue.
En fait c'est la fonction qui avait bon, et l'aperçu impression faux.
Re,
Tu as lu jusqu'au bout ?
C'est parce que ta ligne 24 est trop longue.
En fait c'est la fonction qui avait bon, et l'aperçu impression faux.
Je dois t'avouer que non
Je n'ai lu que
Bizarrement sur cette feuille Ctrl+Fin amène en colonne L, qui est vide.
Il faut supprimer cette colonne, enregistrer le fichier et il redevient d'aplomb.
Enfin sur la feuille... Car vba continue à voir un dernier saut de page en L