BARRE D'AVANCEMENT DANS UNE APPLICATION CONSOLE

BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008 - 28 juin 2007 à 10:06
arnaud2006 Messages postés 6 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 1 juin 2009 - 18 août 2008 à 20:17
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

arnaud2006 Messages postés 6 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 1 juin 2009
18 août 2008 à 20:17
Merci
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
3 juil. 2007 à 18:43
oops ...

# Private Sub WriteRien(ByVal NOF As Integer)
# Dim i As Integer
# For i = 1 To NOF
# Console.WriteLine(" ")
# Next i
# End Sub
BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008
3 juil. 2007 à 18:10
Oups désolé !
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
3 juil. 2007 à 16:06
désolé .. au fait : c'est ghuysmans99 et pas GHUYSMANNS99
BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008
3 juil. 2007 à 10:33
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...
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
2 juil. 2007 à 17:37
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 !
BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008
30 juin 2007 à 12:51
Ok merci !!
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
30 juin 2007 à 10:59
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!"
BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008
30 juin 2007 à 10:44
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.
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
29 juin 2007 à 19:01
au fait : tu ne connaissais pas les boucles ??
BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008
29 juin 2007 à 11:57
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.
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
28 juin 2007 à 14:50
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 !
BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008
28 juin 2007 à 11:43
Voilà, c'est fait... merci beaucoup !
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
28 juin 2007 à 11:19
clair que ghuysmans99 a raison....
il faut nettoyer tout ça, c'est de la bidouille totale pour l'instant.
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
28 juin 2007 à 10:45
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 !
BERGOUGNOUX Messages postés 40 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 16 mars 2008
28 juin 2007 à 10:06
Voilà, laissez vos commentaires ^^
Rejoignez-nous