BARRE D'AVANCEMENT DANS UNE APPLICATION CONSOLE

Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008
- - Dernière réponse : 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

Afficher la suite 
arnaud2006
Messages postés
6
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
1 juin 2009
-
Merci
ghuysmans99
Messages postés
2501
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
BERGOUGNOUX
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008
-
Oups désolé !
ghuysmans99
Messages postés
2501
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
BERGOUGNOUX
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...
ghuysmans99
Messages postés
2501
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 !
BERGOUGNOUX
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008
-
Ok merci !!
ghuysmans99
Messages postés
2501
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!"
BERGOUGNOUX
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.
ghuysmans99
Messages postés
2501
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1 -
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
-
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
2501
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 !
BERGOUGNOUX
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 !
hvb
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.
ghuysmans99
Messages postés
2501
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 !
BERGOUGNOUX
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008
-
Voilà, laissez vos commentaires ^^