cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 novembre 2007
-
5 nov. 2007 à 00:52
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
6 nov. 2007 à 01:03
bonjour a tous
voila j'ai un problème insoluble,
voila 3 jours que je suis dessus et sans résultat probant,
je me suis dit que dans la communauté de vbfrance il y aurai bien quelqu'un qui pourrai éclairé ma lanterne
car là je sais plus quoi faire.
Voila le probleme en quelques lignes.
j'ai concocté une petite appli avec Excel et VBA
rien de très compliqué, il s'agit de mettre a jour un fichier excel depuis des form(s) vb
- Insertion d'une nouvelle valeur
- Affichage des valeurs dans un FlexGrid
- Modification de valeur
- Suppression de valeur
le probleme est que lorsque j'efface une ligne le poids de mon fichier augmente (au lieu de diminuer)
et le probleme est récurrent si bien qu'après avoir enregistrer les modifications mon fichier double a chaque fois
Ainsi pour un poids de 700 Ko au départ je me retrouve avec 2,14 Mo après avoir ajouter puis supprimer 2 valeurs
et si je continue mon fichier double encore... 4 Mo puis 8 Mo si bien qu'après quelques dizaines de manipulation mon fichier est devenu trop important pour pouvoir l'ouvrir (et là c'est le drame...) Obliger de supprimer mes form(s) d'excel est de les re-enregistrer dans le projet là et seulement là le poids du fichier revient à 700 Ko
je suis completement dépassé par cet effet je ne comprend pas ce qui peut causer un tel phénomène
si quelqu'un à la solution ou a déjà rencontrer ce problème.. please help me !
A toutes les bonnes volonté merci par avance
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 nov. 2007 à 02:40
Salut
A priori, je ne vois pas ce qui pourrais créer ce gonflement.
Sous Access, je t'aurais dit que c'était normal et qu'il suffisait de compacter, mais sous Excel, jamais observé ce phénomène.
J'ai regardé dans les options de Excel, il n'y a pas d'option permettant de conserver l'historique des modifs (qui, en s'entassant, aurait pu faire grossir le fichier)
Vérifie qqchose : Ouvre ton fichier Excel et supprime à la main une ou deux lignes, puis sauve-le.
Est-ce que ça taille a encore augmentée ?
Si oui, je ne comprends pas pourquoi ...
Si non, c'est donc la programmation de tes macros qui génère ce problème. Vérifie tes lignes, quelque chose te sautera peut-être aux yeux.
Vérifie que des données ne soient pas copiées au fin fond d'une des feuilles en guise de zone temporaire et qui ne serait pas vidé.
A court d'idée ...
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 nov. 2007 à 02:51
Chez Microsoft, ils parlent de ce phénomène pour les fichiers de Project qui seraient corrompus.
La solution, que tu pourrais tester avec Excel, est la suivante :
"Procéder à l'enregistrement (menu Fichier, Enregistrer) immédiatement après avoir ouvert le fichier"
Une autre solution consiste à ouvrir le fichier Excel, de l'enregistrer sous un autre nom, de refermer Excel, de supprimer l'original qui gonfle puis de renommer le nouveau fichier comme l'ancien.
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 novembre 2007 5 nov. 2007 à 13:04
Bonjour,
j'ai tester les deux solution mais rien n'y fait
j'ai fait le test de supprimer plusieurs lignes a la main dans le classeur est après enregistrement le fichier continu d'augmenter
en fait je pense que c'est mon form3 qui pose ce probleme
parceque lorsque je le supprime du projet mon fichier revient à 233 Ko
mais dans mon code je ne vois pas d'erreur.. peut être parceque je suis trop nul
enfin pour infos voir ci-dessous les procedures du form3 ci cela peut aider
Private Sub DetruireLigne()
DerniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To 1 Step -1
If Application.CountA(Rows(R)) = 0 Then Rows(R).Delete Shift:=xlUp
Next R
End Sub
Private Sub CommandButton1_Click()
UserForm3.Hide
Set UserForm3 = Nothing
Unload UserForm3
Feuil6.Label3.Caption = vbNullString
End Sub
Private Sub Image2_Click()
Dim Btns As String
Btns = "vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal"
Ok = MsgBox("êtes vous sûr de vouloir supprimer l'enregistrement N° " & MSFlexGrid1.RowSel & " ?", 4 + 32, "Confimez")
If Ok = 6 Then
Select Case (MSFlexGrid1.RowSel)
Case 1 To 3
MsgBox ("La cellule N°" & MSFlexGrid1.RowSel & " doît être conservée")
Case Else
Range("operations!A" & MSFlexGrid1.RowSel).Value = ""
Call DetruireLigne
Call UserForm_Activate
Feuil6.Label3.Caption = "Le type d'opération a été supprimé"
End Select
End If
End Sub
Private Sub UserForm_Activate()
Dim i As Integer
' Met en place la liste
With MSFlexGrid1
.Clear
.FormatString = " Libellé"
.ColWidth(0) = 1050
.ColWidth(1) = 2500
End With
' Affiche les type d'operation
tCpt = Range("operations!A1").End(xlDown).Row
MSFlexGrid1.Rows = tCpt + 1
With MSFlexGrid1.Rows = tCpt
For i = 1 To tCpt
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = i
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = Range("operations!A" & i)
If i > 1 Then
Label1.Caption = "Actuellement " & i & " Enregistrements"
Else
Label1.Caption = "Actuellement " & i & " Enregistrement"
End If
Next i
End With
End Sub
Private Sub MSFlexGrid1_DblClick()
UserForm4.TextBox1.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel, MSFlexGrid1.ColSel)
UserForm4.Label2.Caption = MSFlexGrid1.RowSel
UserForm4.Show
End Sub
Private Sub Image1_Click()
Call MSFlexGrid1_DblClick
End Sub
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 novembre 2007 5 nov. 2007 à 13:11
re,
je confirme le probleme vient bien du form3
pour m'en rendre compte j'ai supprimer les procedures du form3
donc il est accessible mais ne fonctionne pas et là pas de probleme lors de l'enregistrement
j'ajoute et le fichier augmente de façon normal
je supprime et le fichier diminu donc le probleme vient bien des procedures...
si quelqu'un peut m'aider à amélioré la procedure ou a trouver le probleme ce sera pour moi un grand soulagement
Par avance merci de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 novembre 2007 5 nov. 2007 à 13:32
petite correction
apres des tests, je me suis apercue que la procedure n'avais rien a voir, en fait c'est le form qui part en coquille
- suppression du form dans le projet
le fichier réagi normalement
- ajout du form dans le projet
le fichier prend 500 ko (maintenant il fait 731 Ko)
- suppression de la procedure liée au form3 seul le form reste
- Ajout d'une données dans une cellule
le fichier est monté à 1,19 Mo
- Suppression de la données enregistré à la main pas par le formulaire
le fichier est passé à 2.13 Mo
et a chaque enregistrement il double le poid du fichier
ces testes me laisse pensé que le problème vient du formulaire en lui même plutot qu'a la procedure
quelqu'un peut me confirmer ?
merci a toutes et à tous