Lecture d?un fichier x.ini avec progressBar

Résolu
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007 - 7 mars 2006 à 13:06
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 7 mars 2006 à 20:18
Bonjour




Voila je souhaite r’ajouter a ce code une progressbar, mais celle si ne marche j’ai qu’a la fin du chargement.


Il faut savoir que la ListMB.ini contient plus de 87524 lignes.


Open App.Path & "\Membre\ListMB.ini" For Input As #1


While Not EOF(1)


Input #1, Ligne


ListBox1.AddItem Ligne


Wend


Close #1




Merci d’avance

6 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 mars 2006 à 13:54
Petites améliorations de dernière minute :








Private Sub CommandButton1_Click()
Dim numFile As Long
Dim sTemp As String
Dim compt As Long

' La variable compt sert ici à compter les
' lignes du fichier texte.
' Testé sur 92000 lignes => 0.5 secondes.
compt = 0
numFile = FreeFile
Open "C:\toto.txt" For Input As #numFile
While Not EOF(numFile)
Line Input #numFile, sTemp
compt = compt + 1
Wend
Close #numFile

' Maintenant, on relit le fichier pour
' l'insérer dans la listbox.
ProgressBar1.Min = 0
ProgressBar1.Value = 0

ProgressBar1.Max = Int(compt / 4)+1
' A partir d'ici, on utilise la variable
' compt pour changer la progressbar
' toutes les 4 lignes lues.
numFile = FreeFile
Open "C:\toto.txt" For Input As #numFile
While Not EOF(numFile)
Line Input #numFile, sTemp
ListBox1.AddItem sTemp
compt = compt + 1
If compt = 4 Then


ProgressBar1.Value = ProgressBar1.Value + 1
DoEvents
compt = 0
End If
Wend
Close #numFile
ProgressBar1.Value = ProgressBar1.Max





End Sub










Manu
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 mars 2006 à 13:25
Bonjour

Langage VB6/.NET ?
si VB6 : les progressbar sont limitées à 32767 en valeur maximale.
Si VB.NET : met des DoEvents() pour permettre le rafraichissement de la PB.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 mars 2006 à 13:50
La limitation maximale des progressbar n'est pas trop gênante. Il
suffit d'incrémenter la progressbar de 1 tous les 4 lignes. Ainsi, tu
sauras lire 128000 lignes.

Mais avant de pouvoir utiliser cette progressbar, tu dois déterminer le nombre de lignes qu'il y a dans ton fichier.

Sans ce nombre de ligne, pas de ProgressBar1.Max

Sans ProgressBar1.Max, pas de ratio lignes_lues/lignes_à_lire.

Et ceci est valable dans tous les langages.












Private Sub CommandButton1_Click()

Dim numFile As Long

Dim sTemp As String

Dim compt As Long



' La variable compt sert ici à compter les

' lignes du fichier texte.

' Testé sur 92000 lignes => 0.5 secondes.

compt = 0

numFile = FreeFile

Open "C:\toto.txt" For Input As #numFile

While Not EOF(numFile)

Line Input #numFile, sTemp

compt = compt + 1

Wend

Close #numFile



' Maintenant, on relit le fichier pour

' l'insérer dans la listbox.

ProgressBar1.Min = 0

ProgressBar1.Value = 0

ProgressBar1.Max = Int(compt / 4)

' A partir d'ici, on utilise la variable

' compt pour changer la progressbar

' toutes les 4 lignes lues.

numFile = FreeFile

Open "C:\toto.txt" For Input As #numFile

While Not EOF(numFile)

Line Input #numFile, sTemp

ListBox1.AddItem sTemp

compt = compt + 1

If compt = 4 Then


ProgressBar1.Value = ProgressBar1.Value + 1

DoEvents

compt = 0

End If

Wend

Close #numFile



End Sub





Manu
0
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
7 mars 2006 à 17:41
Bonjour

Merci a vous tous pour vos réponses, mais j’ai le même problème la progressbar ne bouge pas au chargement, mais a la fin du chargement le value passe directement en Max.

Je suis sur VB6


Merci pour vos prochaines réponses.
0

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

Posez votre question
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
7 mars 2006 à 17:59
J’ai légèrement modifié le code de Manu (econs (Admin CS)).
merci beaucoup



Private Sub CommandButton1_Click()
Dim numFile As Long
Dim sTemp As String
Dim compt As Long


' La variable compt sert ici à compter les
' lignes du fichier texte.
' Testé sur 92000 lignes => 0.5 secondes.
compt = 0
numFile = FreeFile
Open "C:\toto.txt" For Input As #numFile
While Not EOF(numFile)
Line Input #numFile, sTemp
compt = compt + 1
Wend
Close #numFile

' Maintenant, on relit le fichier pour
' l'insérer dans la listbox.
ProgressBar1.Min = 0
ProgressBar1.Value = 0
ProgressBar1.Max = Int(compt)+1 'Modifier
' A partir d'ici, on utilise la variable
' compt pour changer la progressbar
' toutes les 4 lignes lues.
numFile = FreeFile
Open "C:\toto.txt" For Input As #numFile
While Not EOF(numFile)
Line Input #numFile, sTemp
ListBox1.AddItem sTemp
compt = compt + 1


'''''''''Ajouter'''''''''''''''''
If ProgressBar1.Value <> ProgressBar1.Max Then
ProgressBar1.Value = ProgressBar1.Value + 1
End If
'''''''''''''''''''''''''''''''''
If compt = 4 Then
' ProgressBar1.Value = ProgressBar1.Value + 1
DoEvents
compt = 0
End If
Wend
Close #numFile
ProgressBar1.Value = ProgressBar1.Max



End Sub


merci beaucoup
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 mars 2006 à 20:18
Ce que tu as ajouté fera planter l'appli dès que tu dépasseras la 32567ème ligne !
J'incrémente déjà ProgressBar1.Value quelques lignes en dessous, çà suffit largement !

Manu
0
Rejoignez-nous