bandit girl
Messages postés9Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 6 juin 2006
-
6 juin 2006 à 11:59
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
6 juin 2006 à 17:39
Bonjour,
J'ai actuellement un problème lorsque j'enregistre ma feuille excel
(juste après l'avoir ouverte et sans aucune modifiication), sa taille
s'incrémente à chaque fois de plusieurs centaines de Ko voir quelques
Mo par la suite !!!! Par contre si j'enregistre a nouveau (sans l'avoir
fermé), le poids reste stable.
J'ai dans ce classeur : des modules, des userforms, des modules de classe...
Après quelques recherches je me suis rendue compte que c'était le
fichier *.frx d'un de mes userforms qui gonflait le classeur.
Dans ce userform j'ai plusieurs contrôles dont quatre MSFlexgrids qui semblent etre à l'origine du problème.
En effet quand je les supprime, le .frx reprend une taille normale ainsi que le classeur...
Je ne comprends pas cette augmentation de taille qui ne s'effectue qu'à
l'ouverture du classeur (meme si je ne charge pas la form en question
!)...
Y a t'il des précautions à respecter avec VBA et l'utilisation de
flexgrid?? (sachant que j'en utilise dans d'autre forms sans problème)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juin 2006 à 12:33
Salut,
ça peut arriver !
Pour infos, qd tu fais un programme avec pas mal de Form et Module (Class y compris), la taille augmente au fur et à mesure.
A la fin, j'ai fais 2 test : exporter les form et modules en les réintégrant et résultat : guère de place gagné.
Par contre, je réouvre un nouveau projet et insère les composants manuellement, copier / coller des contrôls et des codes et résultat : 20 à 40 % de réduction de la taille.
Je sais pas pourquoi mais c'est comme ça...
@++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 6 juin 2006 à 13:59
Les fichiers frx (en vb6) stockent surtout les données binaires (images principalement). Donc si ton userform contient beaucoup d'image, ca vient de là !
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juin 2006 à 14:07
Salut DarkSidious,
juste pour compléter ce que tu viens de dire :
dès fois j'exporte des Form et je les intègre ailleurs. Y'a t-il une incidence si on les supprime ? (avant de les avoir importer dans le nouveau projet, bien sûr !)
Merci
@++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 6 juin 2006 à 15:04
salut,
un peu à taton comme Dark (ne connaissant pas VBA), voici une comparaison en VB6 :
une Form sans image sans rien..... aucun frx.
un label dont le caption sera... "bonjour", rien
par contre un caption de déjà 20 ou 30 caractères, il sera stocké en binaire dans le frx.
je suppose que c'est çà ici ton problème..., des contrôles (peut-être entêtes de flex et autres) dont certaines infos sont stoqués dans tes frx...
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 6 juin 2006 à 15:06
ps : tout comme juste un BMP en image de fond peut expliquer la taille... (pas le fait qu'il augmente pour autant)
Mortalino -> non tu peux sans perte, du moment que le projet important (qui fait l'importation....) a les références et objets (composants) nécessaires avant l'importation
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juin 2006 à 15:16
Salut PCPT,
Merci pour la confirmation, j'étais pas sûr car jusqu'à présent, toutes mes application VB6 se trouvent sur mon PC et je n'en ai pas testé sur d'autres.
Bonne aprem !
@++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
bandit girl
Messages postés9Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 6 juin 2006 6 juin 2006 à 15:24
salut PCPT,
j'avais essayé justement de faire un .clear après utilisation de ma
flex (pour enlever tous les textes) mais aucun aucun résultat valable,
la taille augmente toujours...
Ce qui me gène le plus, c'est que je n'ai meme pas chargé cette form quand j'enregistre, pourtant le .frx s'incrèmente...
dans cette meme application, j'ai d'autre useforms avec flex qui ne
posent aucun pb, la seule diiférence : dans celle ci est que j'utilise
les propriétés .coldata et.rowdata en plus, mais je ne pense pas que
cela est une incidence?!
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juin 2006 à 16:05
Pas d'exportation ; Copier / Coller seulement.
Sur mon 1er message c'est justement ce que je disais :
avec exportation puis importation sur nouveau projet, cela ne change rien (et c'est en vba que j'ai testé ça)
par contre, ouvres un nouveau fichier excel en parallèle, et recrée tes UserForm, de l'ancien tu fais "copier" (de tous tes contrôls) que tu colles dans la nouvelle form et ainsi de suite.
Puis tu colles le code.
@++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
bandit girl
Messages postés9Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 6 juin 2006 6 juin 2006 à 16:10
bin avec cette méthode, en effet mon fichier n'est pas très lourd, mais
après quelques enregistrements je me retrouve a nouveau avec plusieurs
Mo en poids de fichier ....
bandit girl
Messages postés9Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 6 juin 2006 6 juin 2006 à 16:43
j'ai remarqué que kan je supprime les flexgrids (sans toucher au code),
puis que j'en remets d'autres (meme noms et propriétés) je récupère un
poids normal, jusq'aux prochains enregeistrements...
Je voudrais donc essayer de contourner mon problème ne créant des MSFlegrid dynamiques. Question est ce possible dans VBA?
pour l'instant j'ai essayé ca (dans mon userform) :
dim withs events grdTraitMesures as MSFlexgrid
Private Sub UserForm_Initialize()
Set grdTraitMesures = Controls.Add("MSForms.MSflexgrid.1","grdTraitMesures" , Visible)
end sub
mais j'ai une erreur : chaine de classe incorrecte
et si je fais set grdTraitMesures = New MSFlexgrid, c'est pas mieux excel se ferme
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juin 2006 à 17:05
Salut,
essai de trouver
Microsoft FlexGrid Control 6.0 (C:\WINDOWS\System32\Msflxgrd.ocx) dans les contrôles supplémentaires et coche le.
Là je suis au taf donc je sais pas si c'est l'ordi ou non mais quand je le rajoute à VBA Excel, c'est nickel mais par contre, quand je le sélectionne pour le tracer sur le UserForm, j'ai un message
"Le contrôle ne peut se créer, [en gros], car pas de license"
mais ça vaut le coup pour toi d'essayer
@++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement