TextBox et ProgressBar

Résolu
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017 - 7 mai 2017 à 15:43
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017 - 8 mai 2017 à 15:29
Bonjour à toutes et à tous,

Je viens vers vous pour mon petit problème :

J'ai 5 textbox et une progressbar ( 0 à 100 )

Je voudrais que lorsqu'une textbox est remplie ( <> "" ou <> 0 )ma progressbar avance de 20 et à l'inverse on enlève 20.

Donc si mais 5 textbox sont remplies ( <> "" ou <> 0 ) la progressbar soit pleine ( 100 ), si 4 sont remplies ( 80 ), si 3 ( 60 ) etc etc

J'ai essayé plein de manip mais si je met 10 ça avance bien mais si j'efface le zero donc 1 ça avance aussi donc j'ai avancé de 40 pour une seule de remplie quoi.

Pouvez vous m'aidez, si oui merci par avance


9 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié le 8 mai 2017 à 15:19
A essayer

les cinq textbox sont nommés
TextBox1 TextBox2 TextBox3 TextBox4 TextBox5

Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown, TextBox2.KeyDown, TextBox3.KeyDown, TextBox4.KeyDown, TextBox5.KeyDown
'verifie que la valeur de la touche frappée est 0 - 9 ou backspace ou delete ou decimal
If e.KeyCode = Keys.D0 Or e.KeyCode = Keys.D1 Or e.KeyCode = Keys.D2 Or e.KeyCode = Keys.D3 _
Or e.KeyCode = Keys.D4 Or e.KeyCode = Keys.D5 Or e.KeyCode = Keys.D6 Or e.KeyCode = Keys.D7 _
Or e.KeyCode = Keys.D8 Or e.KeyCode = Keys.D9 Or e.KeyCode = Keys.NumPad0 Or e.KeyCode = Keys.NumPad1 _
Or e.KeyCode = Keys.NumPad2 Or e.KeyCode = Keys.NumPad3 Or e.KeyCode = Keys.NumPad4 Or e.KeyCode = Keys.NumPad5 _
Or e.KeyCode = Keys.NumPad6 Or e.KeyCode = Keys.NumPad7 Or e.KeyCode = Keys.NumPad8 Or e.KeyCode = Keys.NumPad9 _
Or e.KeyCode = Keys.Decimal Or e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then
DirectCast(sender, TextBox).ReadOnly = False
Else
DirectCast(sender, TextBox).ReadOnly = True
End If
End Sub

Private Function CountTextbox() As Int32
'compte le nombre de textbox ayant une valeur
Dim count As Int32 = 0
Dim ret As Double
For Each item As Control In Me.Controls
If TypeOf item Is TextBox Then
If item.Name = "TextBox1" Or item.Name = "TextBox2" Or item.Name = "TextBox3" _
Or item.Name = "TextBox4" Or item.Name = "TextBox5" Then
If Double.TryParse(DirectCast(item, TextBox).Text, ret) AndAlso ret <> 0 Then
count += 1
End If
End If
End If

Next
Return count
End Function
Private Sub TextBox1_TextChanged(sender As Object, e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged, TextBox3.TextChanged, TextBox4.TextChanged, TextBox5.TextChanged
Dim count As Int32
count = CountTextbox()
ProgressBar1.Value = (ProgressBar1.Maximum \ 5) * count
End Sub

1
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
7 mai 2017 à 15:53
Pouvez-vous montrer quel code avez-vous essayé ?
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
7 mai 2017 à 16:08
Bonjour,

j'ai efface le code car cela ne fonctionnait donc pas mais de mémoire :

private sub Progression_ProgressBar
If TextBox01.text <> "" or TextBox01.text <> "0" and Progressbar.value < 100 then
Progressbar.value = progressbar.value + 20
else
If TextBox01.text = "" or TextBox01.text = "0" and Progressbar.value > 0 then
Progressbar.value = progressbar.value -20
end if
end if
end sub

et avec textchanged ou keypress ( j'ai essayé les 2 )
Progression_ProgressBar()

Merci de votre aide
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
7 mai 2017 à 16:18
Il te faut agir sur le Change de tes TextBox.
Ensuite tu appelles une Sub qui va mettre à jour ton ProgressBar.

Avec un code du genre :
Dim lComptele as Integer=0
Dim lNbTotal as Integer =5

'Pour chaque TextBox
If (ConditionOk) then
	lComptete+=1
end if

'Et à la fin
ProgressBar1.Value=(ProgressBar1.Maximum*lComptete)/lNbTotal


§Code tapé hors EDI, donc à adapter et tester de ton côté.
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
7 mai 2017 à 18:17
Bon bah je n'y arrive pas ! de plus si le textbox est vide ou = à 0 cela n'enleve pas de value à la progressbar

J'ai même trouver sur le net String.IsNullOrEmpty(TextBox1.Text), j'ai "bidouiller" mais rien n'y fait !!!

D'ailleurs je ne comprends pas pourquoi mais si la textbox contient 0 ( par défaut ) cela incrémente la progressbar au démarrage de la form ?
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
7 mai 2017 à 18:33
Avec quel code et sur quel événements ?
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
7 mai 2017 à 18:45
un peu de tout ce qu'il y a au dessus et sur le textchanged, le lostfocus, le keypress ! les problèmes : sur le keypress, si je rentre un nombre à deux chiffres, il m'incrémente 40 ( 2X 20 ), idem sur keypress et le lostfocus ça marche sauf que si je donne le focus une deuxieme fois et que je l'enléve ça réincrémente à nouveau sans tenir compte que la valeur n' a pas bougée !!! le but étant vraiment d'indiquer la progression des textbox, je les remplies toutes je suis à 100%, je supprime une valeur d'une des 5 textbox, je redescend à 80% et depuis le temps que je suis dessus c'est le moral qui est descendu à 10% maxi lol

Comment je peux faire pour qu'on considére que 10 est un chiffre et non la succession de 1 et 0 car le probléme vient vraiment de là je pense ( je n'ai pas précisé mais les texbox n'accepte que les chiffres de 0 à 9 ainsi que les . et les ,
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
Modifié le 7 mai 2017 à 20:28
Quel code utilises-tu ?
As-tu essayé ma proposition ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 mai 2017 à 21:46
Bonjour

Je voudrais que lorsqu'une textbox est remplie ?

Ce n'est pas clair
c.a d par ex si ta textbox est limité à 50 caractères ,après avoir
tapé 50 caractères alors tu incrimentes de 20 le progress bar ?

ne pas confondre remplie et non vide comme tu as écrit
( <> "" ou <> 0 ) c'est non vide ou différent de "0"
0

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

Posez votre question
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
7 mai 2017 à 21:59
Bonsoir,

Mes Textbox sont maximum à 4 chiffres, soit des chiffres entiers ou décimaux, du genre 9999 ou alors 50,2 ou 1, peu importe dirais je ! Le but est via une progressbar d'avoir une vision des 5 textbox si elles sont "remplies" avec des chiffres différent de 0 ( car cela est ma valeur par défaut ) et donc non vide ! Les manipulations que j'ai faites, ne fonctionne pas car si je tape "10" cela m'avance de 20 pour le "1" puis à nouveau 20 pour le "0" alors que moi ce que je souhaite c'est que le "10" saisi ne m'avance que de 20.
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
7 mai 2017 à 22:01
PS : j'incrémente de 20 pour la bonne raison que mes 5 textbox remplies équivalent à 100% de ma progressbar
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 mai 2017 à 22:47
Pas encore clair
donc tu veux que ton textbox n'accepte que des chiffres et la virgule comme séparateur décimal .
Quand augmentes tu le progress bar ?
après avoir tapé 4 chiffres ?
si on tape 2017 de combien augmente le progressbar ?
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
8 mai 2017 à 04:18
- Mes TextBox sont déjà paramétrés pour n'accepter que des chiffres puis la virgule ou point comme séparateur.

- Le mieux je pense serait sur la perte du focus

- Non sur un, deux, trois ou quatre chiffres peu importe

- On augmente de 20 étant donné que j'ai 5 textbox soit 20 X 5 = 100% de la progressbar.

Problèmes rencontrés :
sur le lostfocus :
SI je donne le focus puis l'enléve puis le redonne puis le renléve ( sans modifier la valeur !!! ) cela m'incrémente de 20 + 20 pour une même textbox, il faut donc en plus de cela vérifier que la valeur est la même ou non et que la texbox contienne un chiffre ( sauf 0 ) ou rien du tout

sur le keypress :
SI je tape le chiffre "100" dans un textbox, il avance de 20 pour le chiffre "1" puis à nouveau de 20 pour le "0" puis à nouveau de 20 pour le 2éme "0" alors qu'il ne devrait avancé que de 20 pour ce chiffre 100

Je pense que la meilleure méthode est :

Je saisis un chiffre, je sors du textbox, j'incrémente de 20 la progressbar si pour une raison ou une autre, je reviens dans cette même textbox que j'efface le chiffre saisi c'est à dire que la textbox est vide ou alors que je mette "0" on enléve 20 à la progressbar

Voilà.. j'espére avoir était un peu plus clair...
Bon je verrais cela en rentrant du travail, bonne journée et merci encore pour votre aide


0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 8 mai 2017 à 11:12
Bonjour
Le problème est plus simple si on considère que la ProgressBar est vide à chaque fois que l'on modifie une TextBox
Chaque fois que l'on modifie une TextBox on remet la ProgressBar à 0 et on teste le contenu Texte de chaque TextBox :si elle est non vide et contient une valeur différente de 0 on augmente la ProgressBar de 20 %

Ainsi 2 Textbox vides et 3 remplies donnent 60% par exemple
Si je modifie la TextBox 2 par exemple je refait le calcul pour les 5 Textbox en remettant d'abord la ProgressBar à 0
Pour tester une Textbox
if TextBox.Text <> "0" And TextBox.Text <> String.
Eempty Then ProgressBar.Value = ProgressBar.Value + 20
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
8 mai 2017 à 11:50
C'est ce que j'ai conseillé dans ma 2ième réponse, visiblement, en vain.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024
8 mai 2017 à 13:28
bonjour NHenry
Exact je n'avais pas fait attention
Mille excuses et salutations à toi
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
8 mai 2017 à 14:34
Private Sub Verification_Saisie()
If Txt_Base_Quantite.Text <> "0" And Txt_Base_Quantite.Text <> String.Empty And
Frm_02_Statut_Progress_Bar.Value < 100 Then



Frm_02_Statut_Progress_Bar.Value = Frm_02_Statut_Progress_Bar.Value + 20


Else

If Txt_Base_Quantite.Text = "0" Or String.IsNullOrWhiteSpace(Txt_Base_Quantite.Text) And
Frm_02_Statut_Progress_Bar.Value > 0 Then

Frm_02_Statut_Progress_Bar.Value = Frm_02_Statut_Progress_Bar.Value - 20
End If
End If
end sub

Voilà ce que j'ai réussi à faire pour une textbox ( pour le moment ) cela fonctionne, l'appel de ce code se fait lors du lostfocus du textbox.
J'ai rajouté les <100 et les >0 de la progressbar pour éviter les dépassements des minimum et maximum générant des erreurs...

Il y'a surement mieux à faire pour optimiser cela, merci à vous pour votre aide et vos bons conseils, si d'autres idées je suis preneur lol
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
8 mai 2017 à 15:12
Et bah non cela ne fonctionne pas avec mes 5 textbox, je brule mais bon... je comprends pas
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
8 mai 2017 à 15:11
Bonjour

si d'autres idées je suis preneur lol

et bien si tu essayais ce que t'on proposé NHenry et VB95....

http://codes-sources.commentcamarche.net/forum/affich-10076126-textbox-et-progressbar#3
et là
http://codes-sources.commentcamarche.net/forum/affich-10076126-textbox-et-progressbar#14

0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
8 mai 2017 à 15:16
J'ai déjà essayé mais rien n'y fait ou alors j'ai vraiment pas compris les exemples.

Avec les aides qu'ils m'ont donné j'ai essayé pleins de maniéres puis j'en ai à peu prés trouver une qui fonctionne sauf qu'en fin de compte Non
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
8 mai 2017 à 15:29
Ayé, je pense que c'est bon !!! En pensant bien faire je mettais toutes mes vérification dans une seule et même procédure puis je l'appelais via les lostfocus des textbox. Alors qu'il fallait simplement "vérifier le contenu" directement dans les lostfocus de la textbox correspondante.

Je sais pas si c'est clair lol

Merci vraiment beaucoup à tous
0
Rejoignez-nous