La taille du fichier Excel augmente sans cess

Résolu/Fermé
pap77 - 8 mars 2010 à 16:28
pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013 - 31 mars 2010 à 23:19
Bonjour,
une macro VBA remet à jour un annuaire sous Excel2003 sur demande en chargeant un fichier texte
Toutes les feuilles du classeur sont remises à 0 au départ de la macro, l'opération se déroule normalement
Les remises à jour se succèdent mais je constate que mon fichier voit sa taille augmenter régulièrement
de 1Ko à chaque mise à jour (taille de départ 160Ko)
Une analyse avec ExamDiff me montre que la trace "Feuil1!FFBMembreGestion.ServletTelechargementExtraction : Feuil1!FFBMembreGestion.ServletTelechargementExtraction_1 : Feuil1!FFBMembreGestion.ServletTelechargementExtraction_2 " vient se rajouter à chaque mise à jour.
Comment éviter ce phénomène?
Merci de vos conseils
Cordialement
A voir également:

9 réponses

pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013
8 mars 2010 à 21:59
Bonsoir
Je constate que la cause me parait être l'adjonction de plages nommées (en allant dans fichier-->propriétés
la liste des plages nommées s'allonge)
Comment effacer ces plages?
Pourtant la macro sélectionne la feuille1et supprime toutes les cellules avant de récupérer les nouvelles données!
Des idées
Merci d'avance
Cordialement
PS pap77 et pap77300 ne font qu'un
En voulant m'inscrire après avoir posté mon message mon pseudo pap77 n'a pas été accepté!
Veuillez m'en excuser
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
8 mars 2010 à 23:45
Bonsoir,

Tu pourrais essayer de supprimer le nom avant l'importation (avec un traitement d'erreur au cas où le nom soit déjà supprimé) :
On error resume next
ThisWorkbook.Names("Feuil1!FFBMembreGestion.ServletTelechargementExtraction").Delete
On error goto 0


eric
0
pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013
10 mars 2010 à 08:44
Bonjour eriiic
Merci de ta réponse
Si elle n'était pas efficace car elle supprimait le contenu mais pas le nom, elle m'a permis de résoudre mon PB
J'ai rajouté une ligne supprimant la ("Feuil1!")

Au démarrage suivant je crée une nouvelle ("Feuil!1")
Merci encore
Cordialement

pap

PS comment mettre en "PB résolu"?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
10 mars 2010 à 19:54
Tant mieux si ça t'a inspiré et que tu aies résolu ton pb.
Je suis quand même étonné que ThisWorkbook.Names("Feuil1!").Delete supprime ta feuille (???)
C'est plutôt worksheets("Feuil1").delete qu'il faut utiliser.

eric
0
pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013
11 mars 2010 à 09:20
Bonjour eriiic
Jai utilisé : "ActiveWindows.SelectedSheets.Delete"
et pour recréer "Sheets.Add" suivi de "ActiveSheets.Name="Feuil1"
Merci de tes conseils fort utiles pour le débutant en Macros que je suis
Cordialement

pap
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013
30 mars 2010 à 20:02
Bonjour à tous
Je réactive mon topic pour obtenir des précisions
Mon programme fontionne de manière satisfaisante

Pour régler mon problème j'ai introduit ce code :

Dim n As Variant
For Each n In Names
If Left(n.Name, 20) = "Auxiliaire!FFBMembre" Then n.Delete
Next
Columns("A:IV").Delete

La boucle supprime les noms de plages, mais ne nettoie pas la feuille qui accumule les plages de données importées et se remplit très vite!!
Il faut donc nettoyer la feuille, c'est le rôle de la dernière ligne.
Mais, car il y a un mais (pas très grave )
que je voudrais bien résoudre par pur perfectionnisme :
Le nom de ma plage se recrée à chaque requête, ce qui est normal, mais en s'incrémentant d'un à chaque exécution
feuil1!FFBMembre_xx (xx est un nombre!)
Comment tout remettre à 0
Merci de vos réponses
Pap
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
30 mars 2010 à 23:53
>Bonsoir,

Ca pourrait être interessant que tu fournisses la partie création de la feuille et du nom.
eric
0
pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013
31 mars 2010 à 11:00
bonjour Eric
Merci de t'être manifesté

Voici mon code:
' Macro1 Création nouvelle feuille
Sub Macro1()

Sheets.Add
ActiveSheet.Name = "Annuaire"
ActiveCell.FormulaR1C1 = "Nom"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Prénom"
Range("C1").Select
Sheets("Annuaire").Select

End Sub

'Suppression d'une feuille

Sub Macro2()

ActiveWindow.SelectedSheets.Delete

End Sub

Petit inconvénient un message d'alerte sur la suppression de données...
Cest pour cette raison que je ne l'utilise pas

Cordialement
Pap77300
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
31 mars 2010 à 15:08
Je ne vois pas la création du nom...

Petit inconvénient un message d'alerte sur la suppression de données...
S'il s'agit d'une demande de confirmation tu peux la zapper avec application.displayalerts=false (remettre à true à la fin)

eric
0
pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013
Modifié par pap77300 le 31/03/2010 à 18:20
Rebonjour eriiic
Merci ta proposition fonctionne et me permet de réutiliser la suppression de la feuille.

Voici ma requête :

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Bridge-annuaire\FFBMembreGestion.ServletTelechargementExtraction", _
Destination:=Range("A1"))
.Name = "FFBMembre"

Annuaire!FFBMembre_40 s'incrémente d'un à chaque exécution!

Cordialement
Pap77300
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
31 mars 2010 à 17:53
For Each n In Names
If Left(n.Name, 20) = "Auxiliaire!FFBMembre" Then n.Delete
Next

et

Annuaire!FFBMembre_40 s'incrémente d'un à chaque exécution!

Les noms de feuilles ne sont pas très cohérents non ?

eric
0
pap77300 Messages postés 18 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 avril 2013
31 mars 2010 à 23:19
La requête se fait dans la feuille Annuaire
Tu as tout à fait raison mais entre les 2 j'ai beaucoup travaillé mon sujet et changer quelques variables!!!!
Je te présente mes excuses pour ces incohérences
Tes conseils ont été précieux et m'ont permis de terminer mon programme
En quelques clics de souris le secrétaire du club peut imprimer annuaire téléphonique, adresses internet et adresses postales....le tout extrait directement du fichier de la Fédération!
Un grand merci!
Cordialement
Pap77300
0