Macro qui génére un fichier enorme ??

assniok

XLDnaute Occasionnel
Bonsoir tout le monde,

j'ai un gros pb (c'est le cas de le dire...), j'ai créé une sorte de petite application pour mon travail, cependant je butte sur un pb...

mon aplication me permet de mettre en forme un tableau et de le sauvegarder.

mais lorsque j'enregistre le fichier avec ma macro, ça prend environ 2 min (120 secondes !!) pour avoir au final un fichier de 175 Mo !

ce qui n'est pas normal du tout !! si je n'utilise pas ma macro pour enregistrer le fichier en automatique et que je le fais manuellement via le menu fichier, enregistrer sous ça prends 10 à 15 secondes pour un fichier de moins de 100 Ko !!!!

De plus, n'etant qu'un simple debuttant en VB, je doute que mon code soit vraiment propre donc si il y a des ameliorations possibles, merci de me les indiquer..

j'ai du mettre le fichier ici car il est trop volumineux :(

http://dl.free.fr/fJfXdQWi3

J'espere que vous pourrez m'aider

bonne soirée.
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Macro qui génére un fichier enorme ??

bonjour Assniok, le forum,
Moi j'ai lu et relu et j'ai toujours pas compris ce que tu veux, dans ton fichier tu n'as mis aucune explication ou alors je ne les ai pas vu.
"""Mais""" j'ai ouvert ton fichier et sans explications, j'ai refermé et je passe à autre chose et, il est for probable que les autres font comme moi.
a+
Papou
 

Paritec

XLDnaute Barbatruc
Re : Macro qui génére un fichier enorme ??

Bonsoir Assniok, le forum,
Je viens de faire un essai ou j'ai pris un fichier Excel de 34 kilo, et dedans j'ai sélectionné 2 colonnes de 10 lignes, j'ai enregistré au format dbf4 et j'obtiens un fichier de 1,43 MO
Alors juste une question, bête sans doute, quel est l'intérêt pour toi d'avoir un fichier dbf4?
C'est peut-être normal d'arriver à 175 MO si ton fichier au départ et de quelques MO.
Ton fichier dernière version allégé, qui ne contient pas grand chose d'après ce que j'ai vu fait 1 MO alors je ne sais pas à toi de voir s'il faut persévérer dans la direction du dbf4
a te lire
a+
Papou
 

Paritec

XLDnaute Barbatruc
Re : Macro qui génére un fichier enorme ??

Bonsoir Assniok, le forum,
alors je viens de piocher un peu dans ton fichier alors que tu ais des bugs c'est pas franchement anormal!!
pour n'en citer qu'un évident, tu supprimes la feuil test récap et autre toutes sauf final, et en dernière ligne de la macro tu écris call ClearAll, alors que cette macro fait référence au feuilles que tu as déjà supprimées au dessus.
Je pense que le mieux et de savoir vraiment ce que tu veux faire et de modifier les macro en conséquence
a+
papou

PS: tu vois on s'occupe de toi
 

assniok

XLDnaute Occasionnel
Re : Macro qui génére un fichier enorme ??

bonjour a tous,

Il me semblait bien avoir mis ce que je voulais sur le premier onglet :(
edit : je viens de verifier, c'est bien indiqué... je ne comprends pas pourquoi vous ne le voyez pas :(

pour le format dbf4, non je n'ai pas le choix, a moins que l'on puisse faire du mdb avec excel mais il ne me semble pas... je dois utiliser ce fichier avec un autre logiciel qui n'accepte que du dbf4 ou du mdb

Faites ce test svp :

ouvrer mon fichier, faites le aller chercher le fichier excel joint contenant des valeurs dans les colonnes H et I via la liste deroulante intitulée commercial.

ouvrez le fichier, remplissez les champs du formulaire, validez et cliquez sur le bouton conditionnement final. ensuite, fermez la USF.

maintenant, supprimer tout les onglets sauf le final, et enregistrez le au format dbf4.
notez le temps d'enregistrement du fichier (en gros) et regardez sa taille....

moi il fait l'enregistrement en moins de 15 secondes pour un fichier d'une trentaine de kilos.... on est quand meme bien loin du Mo

Je joint egalement mon fichier généré avec mon appli, qui ne fait que quelques ko !! Mon but est d'obtenir ce fichier en partant du fichier xls et du formulaire du USF

si ce n'est toujours pas claire, merci de me demander que je sache ;)
@+
 

Pièces jointes

  • test dbf.zip
    1.9 KB · Affichages: 14
  • test.xls
    32 KB · Affichages: 69
  • test.xls
    32 KB · Affichages: 70
  • test.xls
    32 KB · Affichages: 68
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Macro qui génére un fichier enorme ??

re Assniok,
tu dis que tout est noté, ok peut-être parceque tu sais ce que tu veux mais essayes de l'ouvrir et de compren,dre ce que tu as écrit sans connaître ton fichier et là tu vas rien comprendre
moi j'ai lu la macro pour savoir que tu veux conserver la feuille final
bref, pas grave.
Ok alors est-ce que tu as essayé d'enregistrer une macro avec toutes les manips dont tu parles, et de relancer cette macro après?
si tu veux bien fais cet essai et envoi le fichier après enregistrement de la macro bien sur!

a+
Papou
 

assniok

XLDnaute Occasionnel
Re : Macro qui génére un fichier enorme ??

j'ai edité mon post precedent pour ajouter des fichiers ;)

je comprends que ça ne puisse pas etre clair, mais c'est assez difficile a expliquer mieux que dans mon precedent post...

pour ce qui est d'enregistré la macro, c'est bien ce que j'avais fait en premier lieu... cependant je ne vois pas trop quoi faire de plus...

Si j'enregistre une macro, ça ne me donnera pas le formulaire... enfin si faut vraiment enregistrer cette macro pour avancer je le ferais mais ça ne servira a rien j'en suis sur....

@+
 

Paritec

XLDnaute Barbatruc
Re : Macro qui génére un fichier enorme ??

Re Assniok,
c'est un dialogue de sourd!!!
le fichier test que tu as envoyé ne contient des données que dans G et H
la liste déroulante commercial!!! là moi j'en ai pas non plu, tu es sur d'avoir envoyé le bon fichier sur free?
Je n'arrive donc pas à faire ce que tu demandes, au fait tu es sous Excel quoi?
moi j'ai pas 2007
De toutes façons pour avancer, enregistres une macro avec l'enregistreur de macro et envoi le tout on va comprendre du moins on va essayer
a+
Papou
 

assniok

XLDnaute Occasionnel
Re : Macro qui génére un fichier enorme ??

en effet je suis allé un peu vite en voulant faire le fichier test.xls, je viens de le modifier ;)

je vais enregistrer une macro comme souhaité même si je ne suis pas convaincu que ça vous aide plus....

ps: je suis sous 2003
 

Gael

XLDnaute Barbatruc
Re : Macro qui génére un fichier enorme ??

BonsoirAssniok, bonsoir à tous,

Dans la procédure "Tri rouleau", tu fais un "cells.select" qui sélectionne l'intégralité de la feuille soit 65536 lignes x 256 colonnes. Comme cette sélection reste active, la sauvegarde en DBF inclue toutes ces cellules d'où la taille du fichier final.

Dans la procédure "Save File", les suppressions d'onglets ne sont pas utiles puisque la sauvegarde en .DBF ne va sauvegarder que la feuille active.

La solution est simplement de sélectionner une cellule dans la feuille "Final" avant la sauvegarde et la procédure devient:

Code:
Sub SaveFile()
Worksheets("Final").Activate
Range("A2").Select
Nlignes = Range("A65536").End(xlUp).Row
Dim Msg, Style, Title 'Help, Ctxt, Response, MyString
Msg = " /!\ Attention /!\ " & vbCrLf & _
"Le nombre d'etiquettes à imprimer est de " & Nlignes - 1 & "!!" & vbCrLf & _
"Notez bien ce nombre pour l'impression des etiquettes" 'Definit le message
Style = vbExclamation 'vbOKOnly    ' Définit les boutons.
Title = "Message d'information"    ' Définit le titre.
MsgBox Msg, Style, Title
Dim Chemin$, Fichier$
'Chemin = "S:\COMMUN\PENDULES\Fichiers générés\"
Chemin = "Z:\......"
Fichier = Range("B2").Value & " - " & Format(Date, "ddmmyyyy") & ".dbf"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Chemin & Fichier, FileFormat:=xlDBF4, CreateBackup:=False
   MsgBox "Le fichier a bien été sauvegardé"
Application.DisplayAlerts = True
ActiveWorkbook.Close SaveChanges:=False
End Sub

Et le fichier final ne fait que 38k avec un temps de sauvegarde très court.

@+

Gael
 

assniok

XLDnaute Occasionnel
Re : Macro qui génére un fichier enorme ??

BonsoirAssniok, bonsoir à tous,

Dans la procédure "Tri rouleau", tu fais un "cells.select" qui sélectionne l'intégralité de la feuille soit 65536 lignes x 256 colonnes. Comme cette sélection reste active, la sauvegarde en DBF inclue toutes ces cellules d'où la taille du fichier final.

Dans la procédure "Save File", les suppressions d'onglets ne sont pas utiles puisque la sauvegarde en .DBF ne va sauvegarder que la feuille active.

La solution est simplement de sélectionner une cellule dans la feuille "Final" avant la sauvegarde et la procédure devient:

Code:
Sub SaveFile()
Worksheets("Final").Activate
Range("A2").Select
Nlignes = Range("A65536").End(xlUp).Row
Dim Msg, Style, Title 'Help, Ctxt, Response, MyString
Msg = " /!\ Attention /!\ " & vbCrLf & _
"Le nombre d'etiquettes à imprimer est de " & Nlignes - 1 & "!!" & vbCrLf & _
"Notez bien ce nombre pour l'impression des etiquettes" 'Definit le message
Style = vbExclamation 'vbOKOnly    ' Définit les boutons.
Title = "Message d'information"    ' Définit le titre.
MsgBox Msg, Style, Title
Dim Chemin$, Fichier$
'Chemin = "S:\COMMUN\PENDULES\Fichiers générés\"
Chemin = "Z:\......"
Fichier = Range("B2").Value & " - " & Format(Date, "ddmmyyyy") & ".dbf"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Chemin & Fichier, FileFormat:=xlDBF4, CreateBackup:=False
   MsgBox "Le fichier a bien été sauvegardé"
Application.DisplayAlerts = True
ActiveWorkbook.Close SaveChanges:=False
End Sub

Et le fichier final ne fait que 38k avec un temps de sauvegarde très court.

@+

Gael

Bonjour a tous,

je fais ressortir ce topic car je viens de me rendre compte qu'il y avait tout de même un petit pb...

Cela fonctionne très bien, mais maintenant que mon projet semble terminé, avant de le difuser, j'ai voulu protèger le projet vba avec un mot de passe.

Le pb est qu'une fois mon projet protégé, l'enregistrement ne fonctionne plus :(
la methode 'saveAs' de l'objet '_workbook' a echoué

quelqu'un peut m'aider a finaliser ce projet ?

bonne journée et @++
 

juju_69

XLDnaute Occasionnel
Re : Macro qui génére un fichier enorme ??

Hello,

Très souvent il est nécessaire de déprotéger ton fichier avant une commande (dans ton cas l'enregistrement) puis de le reprotéger. As tu essayer ?
Pour le faire en vba tu lances l'enregistreur de macro à la déprotection et à la protection cela te permettra de connaitre la syntaxe.

@ +
 

Discussions similaires

Réponses
2
Affichages
328
Réponses
10
Affichages
358

Statistiques des forums

Discussions
312 488
Messages
2 088 835
Membres
103 972
dernier inscrit
steeter