BARRE D'AVANCEMENT DANS UNE APPLICATION CONSOLE

Signaler
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008
-
Messages postés
6
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
1 juin 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43270-barre-d-avancement-dans-une-application-console

Messages postés
6
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
1 juin 2009

Merci
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
oops ...

# Private Sub WriteRien(ByVal NOF As Integer)
# Dim i As Integer
# For i = 1 To NOF
# Console.WriteLine(" ")
# Next i
# End Sub
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008

Oups désolé !
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
désolé .. au fait : c'est ghuysmans99 et pas GHUYSMANNS99
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008

Ca ne fonctionnera pas :

1)WriteRien utilise WriteLine et non pas Write : à chaque fois VB sautera une ligne au lieu d'écrire un espace.

2)Utiliser WriteRien 38 ajouterait tous les espaces d'un coup sans attendre d'intervalles, en supposant qu'on utilise Write et non pas WriteLine.

3)Si on utilise For i = 1 To 38, VB recommencera l'opération jusqu'à ce que la variable i valle 38, la barre progressera donc progressivement (c'est le cas de le dire !). Si on utilise ton code, VB ne le fera qu'une fois, vu qu'il n'y a pas de boucle, et on se retrouve donc au 2) : les 38 espaces seront ajoutés en même temps, la barre progressera donc d'un coup.

Voilà, j'espère que mes explications sont compréhensibles...
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
Me revoilà ... encore quelque chose à remplacer :
remplace ça :

# Private Sub Progress(ByVal SleepVar As Long)
# Dim i As Integer
# For i = 1 To 38
# Console.Write(" ")
# System.Threading.Thread.Sleep(SleepVar)
# Next i
# End Sub
# Private Sub WriteRien(ByVal NOF As Integer)
# Dim i As Integer
# For i = 1 To NOF
# Console.WriteLine("")
# Next i
# End Sub

par ça :

# Private Sub Progress(ByVal SleepVar As Long)
# WriteRien 38
# System.Threading.Thread.Sleep (SleepVar)
# End Sub
#
# Private Sub WriteRien(ByVal NOF As Integer)
# Dim i As Integer
# For i = 1 To NOF
# Console.WriteLine ("")
# Next i
# End Sub

________________________________________________________________-

ps: remplace "# " par rien. c'est juste pour distinguer le code de mes commentaires !
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008

Ok merci !!
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
en fait : while a une condition ... regarde :

Do
Loop While 1=1 'ca ne s'arrêtera JAMAIS

While 1=1 'ca no plus !
Wend

_________________________________

Dim i as Integer
i = 0 'optionnel! initialisé à 0

Do
i = i + 1
debug.print i
Loop While i <= 10 ' 0 -> 10

debug.print "finiiiiiiii!"
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008

Si si, je connaissais, mais je n'arrivais pas à les utiliser, à chaque fois j'avais le problème des boucles infinies avec While...Wend ou End While.

Je ne connaissais pas For i = 1 To .... mais maintenant je comprends mieux le système des boucles. Je crois que je vais utiliser For à la place de While dorénavant, ca me semble plus simple et plus efficace.
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
au fait : tu ne connaissais pas les boucles ??
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008

Merci, ça réduit considérablement la taille du Sub Main()...!

J'ai aussi ajouté CreerBarre, qui automatise la création de la barre et l'avancement, et qui positionne automatiquement le texte qui doit s'afficher au milieu de la ligne 6 de la console.
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
et aussi : ajoute ça :

# Private Sub WriteRien(NOF As Integer)
# Dim i As Integer
# For i = 1 To NOF
# Console.WriteLine ("")
# Next i
# End Sub

remplace ça :

# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine(" Voici un petit exemple de barre d'avancement jaune.")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")

par ça :

# WriteRIEN 5
# Console.WriteLine(" Voici un petit exemple de barre d'avancement jaune.")
# WriteRIEN 6
___________________________________________________________

et ça :

# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine(" Et une autre barre d'avancement, rouge cette fois.")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")
# Console.WriteLine("")

par ça :

# WriteRIEN 5
# Console.WriteLine(" Et une autre barre d'avancement, rouge cette fois.")
# WriteRIEN 6

________________________________________________________________-

ps: remplace "# " par rien. c'est juste pour distinguer le code de mes commentaires !
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008

Voilà, c'est fait... merci beaucoup !
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1
clair que ghuysmans99 a raison....
il faut nettoyer tout ça, c'est de la bidouille totale pour l'instant.
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
il faut que tu utilises des boucles. ajoute ça à ton code :

# Private Sub Progress(SleepVar As Long)
# Dim i As Integer
# For i = 1 To 37
# Console.Write (" ")
# System.Threading.Thread.Sleep (SleepVar)
# Next i
# End Sub

remplace ça :

# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")
# System.Threading.Thread.Sleep(200)
# Console.Write(" ")

par ça :

# Progress 200

_________________________________________________________________

et çà :

# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")
# System.Threading.Thread.Sleep(100)
# Console.Write(" ")

par ça :

# Progress 100

_____________________________________________________________________-

ps: remplace "# " par rien. c'est juste pour distinguer le code de mes commentaires !
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008

Voilà, laissez vos commentaires ^^