Excel, supprimer toutes les liaisons externes [Résolu/Fermé]

Signaler
Messages postés
171
Date d'inscription
mardi 26 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012
-
Elboubdelapampa
Messages postés
171
Date d'inscription
mardi 26 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012
-
Bonjour,
Dans un classeur j'ai généré des liaisons externe vers plusieurs fichiers texte.
J'ai sauvé une copie du classeur et ai supprimé toue les liaisons dans cette copie.
Le problème est que le fichier de copie est toujours aussi volumineux qu'avant et qu'il me propose toujours d'actualiser les liaisons. (pas à l'ouverture du classeur mais l'icone dans la barre des taches est toujours activée)
Ce qui est étrange parce que edit/liaison n'est pas sélectionnable et insérer/nom/définition est vide.
Vous avez une idée ou celles-ci se cachent?


Merci d'avance


8 réponses

Messages postés
171
Date d'inscription
mardi 26 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012
5
Bon apparemment la réponse est pas simple. Je pose la question autrement:
Mon fichier Excel contenant 21 pages de 7 colonnes et 2800 lignes chacunes + 3 pages de graphiques contenant chacun une 50 aine de séries. Après avoir supprimé les macros et les liens externes comme précisé précédemment, mon fichier fait encore 84'800 KB, à votre avis le problème vient d'où? Des liens externes non supprimé (voir poste au dessus), le grand nombre de série dans les graphiques, le nombre de pages?
Bref faut que je diminue sa taille parce que chaque jour je met à jour le classeur et sauvegarde une copie, ça va vite prendre de la place. San compter les problèmes d'envoi par mail...
Une idée?

Merci d'avance
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2250
Bonjour,
Ce code fonctionne plutôt pas mal...
http://tombeeu.blogspot.com/2007/04/rduire-la-taille-dun-fichier-excel.html

Pout l'utiliser :
1- dans ton classeur excel ouvert, taper ALT+F11
2- Insertion/Module
3- Y copier/coller ce code :
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 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 :" _
& 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

4- Fermer la fenêtre Visual Basic
5- ALT+F8, sélectionner Nettoie et Exécuter... Attendre...
6- Enregistrer et vérifier la taille...
Messages postés
171
Date d'inscription
mardi 26 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012
5
Bonjour,
Merci pour la réponse,
j'avais déjà essayé cette macro, mais je gagne à tout casser 100 GB, ce qui n'est pas énorme.
Bon je comprend pas tout dans le fonctionnement de la macro, je vais me pencher dessus et essayer de l'optimiser pour mon cas, mais je doute que j'arrive à faire grand chose.
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2250
100 Giga!!! Tu dois te tromper quelque part non???
Essaye ceci :
Fais des copies de ton classeur page par page dans un même classeur. Entre chaque chaque copie de page, enregistre ton nouveau classeur et vérifies en la taille. Tu sauras donc qu'elles sont les pages "lourdes" et pourra sans nul doute mieux cerner le problème.
Les soucis de taille de fichier excel ont maintes sources...
- formules trop lourdes (genre des SOMMEPROD((A1:A50000)...)
- certains graphiques également peuvent alourdir
- des cellules non utilisées (ce qui n'est pas ton problème car la macro donnée précédemment aurait résolu ton problème)
etc etc...
Elboubdelapampa
Messages postés
171
Date d'inscription
mardi 26 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012
5
Euh ouais 100kB pardon.
J'ai pas beaucoup de formule, donc je pense que ça vient des graphiques. Si je réduis le nombre de séries, ça peut avoir une influence significative? Ou si je sauvegarde les graphiques comme objet?
Je vais essayer aussi de réduire le nombre de page.

En tout cas merci.
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2250
Essaye ce que je t'ai dit : copie feuilles par feuilles en vérifiant la taille entre chaque!!!
Messages postés
171
Date d'inscription
mardi 26 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012
5
Ok c'est bon, c'est effectivement le nombre de feuille important qui prenait trop de place. J'ai fait une macro pour supprimer celles étant inutile en fonction de l'actualisation.

Merci