OVH Cloud OVH Cloud

Barre de progression & lecture fichier txt

9 réponses
Avatar
Kevin
bonsoir,

j'ai un fichier texte que je lis ligne par ligne avec visual basic. de ce
cote la aucun souci.
je veux afficher un indicateur de progression (un controle textbox ou label)
qui affiche l'avancee de la lecture des lignes de mon fichier jusqu'a sa
fin, du genre :
ligne 1 lue
ligne 2 lue
ligne 3 lue
etc...
mais sans utiliser le controle progressbar

qq'un aurait-il le squelette du code que je cherche svp car je suis tout
nouveau en vb
merci beaucoup de votre aide
kevin

9 réponses

Avatar
Aski
Bonsoir Kevin

Je n'ai pas conservé le code que j'avais écrit lorsque je travaillais en
VB4.
Le principe consiste à placer, dans un container quelconque, un certain
nombre de rectangles identiques à fond bleu (par exemple) et de les rendre
visibles ou invisibles en fonction de ce que tu veux.
Essaie avec cette idée. Ceci te fera progresser.

--
Aski

AntiSpamEdit et traduction française de k9
http://h.dechily.free.fr/
http://h.charlier.de.chily.perso.cegetel.net/

Kevin wrote:
|| bonsoir,
||
|| j'ai un fichier texte que je lis ligne par ligne avec visual basic.
|| de ce cote la aucun souci.
|| je veux afficher un indicateur de progression (un controle textbox
|| ou label) qui affiche l'avancee de la lecture des lignes de mon
|| fichier jusqu'a sa fin, du genre :
|| ligne 1 lue
|| ligne 2 lue
|| ligne 3 lue
|| etc...
|| mais sans utiliser le controle progressbar
||
|| qq'un aurait-il le squelette du code que je cherche svp car je suis
|| tout nouveau en vb
|| merci beaucoup de votre aide
|| kevin
Avatar
LE TROLL
Salut,

Pour reprendre ton exemple:
ligne 1 lue, 2 lue, 3...

Déjà si tu fais ça, le mec il n'aura pas le temps de
lire les lignes, si je puis dire, et tu va avoir un
affichage plus lent...
D'autre part, il faut savoir préalablement combien on a
de lignes pour faire un réglage (lecture initiale à vide
(plus rapide)), puis ensuite (mais ça dépend de la taille),
d'afficher un pourcentage par exemple, en même temps que ta
seconde lecture qui elle affiche...
------

"Kevin" a écrit dans le message de news:
423886f1$0$12714$
bonsoir,

j'ai un fichier texte que je lis ligne par ligne avec
visual basic. de ce
cote la aucun souci.
je veux afficher un indicateur de progression (un controle
textbox ou label)
qui affiche l'avancee de la lecture des lignes de mon
fichier jusqu'a sa
fin, du genre :
ligne 1 lue
ligne 2 lue
ligne 3 lue
etc...
mais sans utiliser le controle progressbar

qq'un aurait-il le squelette du code que je cherche svp
car je suis tout
nouveau en vb
merci beaucoup de votre aide
kevin




Avatar
Kevin
Oki Le Troll, merci de ta reponse et suis ok avec ce que tu dis mais as-tu
un exemple de code pour faire tourner le compteur dont tu parles stp ?

"LE TROLL" <le a écrit dans le message de
news:
Salut,

Pour reprendre ton exemple:
ligne 1 lue, 2 lue, 3...

Déjà si tu fais ça, le mec il n'aura pas le temps de
lire les lignes, si je puis dire, et tu va avoir un
affichage plus lent...
D'autre part, il faut savoir préalablement combien on a
de lignes pour faire un réglage (lecture initiale à vide
(plus rapide)), puis ensuite (mais ça dépend de la taille),
d'afficher un pourcentage par exemple, en même temps que ta
seconde lecture qui elle affiche...
------

"Kevin" a écrit dans le message de news:
423886f1$0$12714$
> bonsoir,
>
> j'ai un fichier texte que je lis ligne par ligne avec
> visual basic. de ce
> cote la aucun souci.
> je veux afficher un indicateur de progression (un controle
> textbox ou label)
> qui affiche l'avancee de la lecture des lignes de mon
> fichier jusqu'a sa
> fin, du genre :
> ligne 1 lue
> ligne 2 lue
> ligne 3 lue
> etc...
> mais sans utiliser le controle progressbar
>
> qq'un aurait-il le squelette du code que je cherche svp
> car je suis tout
> nouveau en vb
> merci beaucoup de votre aide
> kevin
>
>




Avatar
Phil
Tu peux faire quelque chose du genre:

Utilise un Label Label1 pour afficher ton message:

Sub Display
Dim i as long, f as integer, szLigne as string

i = 1
' Récupérer une unité libre
f = Freefile
' Ouverture fichier
open monfichier for input as #f
' Tant qu'on n'est pas à la fin
while not eof(f)
Label1.Caption = "Ligne "+trim(str(i))+ " lue."
Line Input #f, szLigne
' Faire ce que tu veux ici
.....
.....
Wend
Close #f
End Sub

Sans garantie du gouvernement (-;

Phil

Kevin a écrit :
Oki Le Troll, merci de ta reponse et suis ok avec ce que tu dis mais as-tu
un exemple de code pour faire tourner le compteur dont tu parles stp ?

"LE TROLL" <le a écrit dans le message de
news:

Salut,

Pour reprendre ton exemple:
ligne 1 lue, 2 lue, 3...

Déjà si tu fais ça, le mec il n'aura pas le temps de
lire les lignes, si je puis dire, et tu va avoir un
affichage plus lent...
D'autre part, il faut savoir préalablement combien on a
de lignes pour faire un réglage (lecture initiale à vide
(plus rapide)), puis ensuite (mais ça dépend de la taille),
d'afficher un pourcentage par exemple, en même temps que ta
seconde lecture qui elle affiche...
------

"Kevin" a écrit dans le message de news:
423886f1$0$12714$

bonsoir,

j'ai un fichier texte que je lis ligne par ligne avec
visual basic. de ce
cote la aucun souci.
je veux afficher un indicateur de progression (un controle
textbox ou label)
qui affiche l'avancee de la lecture des lignes de mon
fichier jusqu'a sa
fin, du genre :
ligne 1 lue
ligne 2 lue
ligne 3 lue
etc...
mais sans utiliser le controle progressbar

qq'un aurait-il le squelette du code que je cherche svp
car je suis tout
nouveau en vb
merci beaucoup de votre aide
kevin












Avatar
Phil
Tu peux faire quelque chose du genre:

Utilise un Label Label1 pour afficher ton message:

Sub Display
Dim i as long, f as integer, szLigne as string

i = 1
' Récupérer une unité libre
f = Freefile
' Ouverture fichier
open monfichier for input as #f
' Tant qu'on n'est pas à la fin
while not eof(f)
Label1.Caption = "Ligne "+trim(str(i))+ " lue."
Line Input #f, szLigne
' Faire ce que tu veux ici
.....
.....
Wend
Close #f
End Sub

Sans garantie du gouvernement (-;

Phil



Kevin a écrit :
Oki Le Troll, merci de ta reponse et suis ok avec ce que tu dis mais as-tu
un exemple de code pour faire tourner le compteur dont tu parles stp ?

"LE TROLL" <le a écrit dans le message de
news:

Salut,

Pour reprendre ton exemple:
ligne 1 lue, 2 lue, 3...

Déjà si tu fais ça, le mec il n'aura pas le temps de
lire les lignes, si je puis dire, et tu va avoir un
affichage plus lent...
D'autre part, il faut savoir préalablement combien on a
de lignes pour faire un réglage (lecture initiale à vide
(plus rapide)), puis ensuite (mais ça dépend de la taille),
d'afficher un pourcentage par exemple, en même temps que ta
seconde lecture qui elle affiche...
------

"Kevin" a écrit dans le message de news:
423886f1$0$12714$

bonsoir,

j'ai un fichier texte que je lis ligne par ligne avec
visual basic. de ce
cote la aucun souci.
je veux afficher un indicateur de progression (un controle
textbox ou label)
qui affiche l'avancee de la lecture des lignes de mon
fichier jusqu'a sa
fin, du genre :
ligne 1 lue
ligne 2 lue
ligne 3 lue
etc...
mais sans utiliser le controle progressbar

qq'un aurait-il le squelette du code que je cherche svp
car je suis tout
nouveau en vb
merci beaucoup de votre aide
kevin












Avatar
LE TROLL
On ne peut pas lire si vite les lignes, on va rien voir,
en plus il faut rendre la main à l'affichage...
--------

"Phil" a écrit dans le message de news:
4238a26e$0$14014$
Tu peux faire quelque chose du genre:

Utilise un Label Label1 pour afficher ton message:

Sub Display
Dim i as long, f as integer, szLigne as string

i = 1
' Récupérer une unité libre
f = Freefile
' Ouverture fichier
open monfichier for input as #f
' Tant qu'on n'est pas à la fin
while not eof(f)
Label1.Caption = "Ligne "+trim(str(i))+ " lue."
Line Input #f, szLigne ' Faire ce que tu veux ici
.....
.....
Wend
Close #f
End Sub

Sans garantie du gouvernement (-;

Phil



Kevin a écrit :
Oki Le Troll, merci de ta reponse et suis ok avec ce que
tu dis mais as-tu
un exemple de code pour faire tourner le compteur dont tu
parles stp ?

"LE TROLL" <le a écrit dans le message de
news:

Salut,

Pour reprendre ton exemple:
ligne 1 lue, 2 lue, 3...

Déjà si tu fais ça, le mec il n'aura pas le temps de
lire les lignes, si je puis dire, et tu va avoir un
affichage plus lent...
D'autre part, il faut savoir préalablement combien on
a
de lignes pour faire un réglage (lecture initiale à vide
(plus rapide)), puis ensuite (mais ça dépend de la
taille),
d'afficher un pourcentage par exemple, en même temps que
ta
seconde lecture qui elle affiche...
------

"Kevin" a écrit dans le message de news:
423886f1$0$12714$

bonsoir,

j'ai un fichier texte que je lis ligne par ligne avec
visual basic. de ce
cote la aucun souci.
je veux afficher un indicateur de progression (un
controle
textbox ou label)
qui affiche l'avancee de la lecture des lignes de mon
fichier jusqu'a sa
fin, du genre :
ligne 1 lue
ligne 2 lue
ligne 3 lue
etc...
mais sans utiliser le controle progressbar

qq'un aurait-il le squelette du code que je cherche svp
car je suis tout
nouveau en vb
merci beaucoup de votre aide
kevin













Avatar
LE TROLL
Voici chef:

Dim p As Long
Dim ligne as string
dim nombre as long
dim cinq_pourcent(20) as long
dim i as long
dim j as long
'
p = FreeFile
ChDrive App.Path
ChDir App.Path
nombre = 0
'
Open "fichier.txt" For Input As p ' comptage
do while eof(p) <> true then
Line Input #p, ligne
nombre = nombre + 1
loop
close p
'
cinq_pourcent(1) = 0
j=2
for i = 5 to 95 step 5
cing_pourcent(j) = nombre i ' entier
j = j + 1
next i
cinq_pourcent(20) = 100
'
nombre = 0
Open "fichier.txt" For Input As p ' affichage
do while eof(p) <> true then
Line Input #p, ligne ' data à traiter...
nombre = nombre + 1
for j = 1 to 20
doEvents ' pour rendre la main au label au passage
if cinq_pourcent(j) = nombre then label1.caption =
cinq_pourcent(j) & " lignes lues"
next j
loop
close p
'
-------> non testé, vérifie avant :o)


"Kevin" a écrit dans le message de news:
42389b15$0$29118$
Oki Le Troll, merci de ta reponse et suis ok avec ce que
tu dis mais as-tu
un exemple de code pour faire tourner le compteur dont tu
parles stp ?

"LE TROLL" <le a écrit dans le message de
news:
Salut,

Pour reprendre ton exemple:
ligne 1 lue, 2 lue, 3...

Déjà si tu fais ça, le mec il n'aura pas le temps de
lire les lignes, si je puis dire, et tu va avoir un
affichage plus lent...
D'autre part, il faut savoir préalablement combien on
a
de lignes pour faire un réglage (lecture initiale à vide
(plus rapide)), puis ensuite (mais ça dépend de la
taille),
d'afficher un pourcentage par exemple, en même temps que
ta
seconde lecture qui elle affiche...
------

"Kevin" a écrit dans le message de news:
423886f1$0$12714$
> bonsoir,
>
> j'ai un fichier texte que je lis ligne par ligne avec
> visual basic. de ce
> cote la aucun souci.
> je veux afficher un indicateur de progression (un
> controle
> textbox ou label)
> qui affiche l'avancee de la lecture des lignes de mon
> fichier jusqu'a sa
> fin, du genre :
> ligne 1 lue
> ligne 2 lue
> ligne 3 lue
> etc...
> mais sans utiliser le controle progressbar
>
> qq'un aurait-il le squelette du code que je cherche svp
> car je suis tout
> nouveau en vb
> merci beaucoup de votre aide
> kevin
>
>








Avatar
dark poulpo
je te donnerai pas de code, mais à ta place, pour le pourcentage,je jouerai
sur la taille du fichier global et non le nombre de ligne, et à chaque ligne
que tu lis tu ajoutes la taille lu.

--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.20
Avatar
jean-marc
"Phil" wrote in message
news:4238a26e$0$14014$
Tu peux faire quelque chose du genre:

Utilise un Label Label1 pour afficher ton message:

Sub Display
Dim i as long, f as integer, szLigne as string

i = 1
' Récupérer une unité libre
f = Freefile
' Ouverture fichier
open monfichier for input as #f
' Tant qu'on n'est pas à la fin
while not eof(f)
Label1.Caption = "Ligne "+trim(str(i))+ " lue."
Line Input #f, szLigne
' Faire ce que tu veux ici
.....
.....
Wend



Hello,

Ca va pas progresser beaucoup si tu n'incrémentes pas ta variable i.
Afficher à chaque ligne n'est pas une bonne idée.
Ne pas mettre de Label1.refresh n'est pas une bonne idée non plus.
Utiliser i pour autre chose qu'un compteur de boucle for est maladroit.

Une meilleure idée globale serait:

Dim NombreLignes as Long

while not eof(f)
Line Input #f, szLigne
' Faire ce que tu veux ici



NombreLignes=NombreLignes+1
' on affiche toutes les 10 lignes
If (NombreLignes mod 10) = 0 then
Label1.Caption = "Ligne " & NombreLignes & " lue."
Label1.Refresh
End If
.....
Wend



Le nombre 10 serait à mettre dans une constante correctement nommée
en tête de fichier.

--
Jean-marc