TextBox et ProgressBar [Résolu]

Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
8 mai 2017
- 7 mai 2017 à 15:43 - Dernière réponse :
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
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


Afficher la suite 

Votre réponse

22 réponses

Meilleure réponse
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
Modifié par cs_ShayW le 8/05/2017 à 15:19
1
Merci
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

Merci cs_ShayW 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 novembre 2018
7 mai 2017 à 15:53
0
Merci
Pouvez-vous montrer quel code avez-vous essayé ?
Commenter la réponse de NHenry
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
8 mai 2017
7 mai 2017 à 16:08
0
Merci
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
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
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 ?
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 novembre 2018
- 7 mai 2017 à 18:33
Avec quel code et sur quel événements ?
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
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 ,
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 novembre 2018
- 7 mai 2017 à 20:12
Quel code utilises-tu ?
As-tu essayé ma proposition ?
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
8 mai 2017
- 7 mai 2017 à 21:42
J'ai essayé mais je n'ai pas le résultat escompté comme indiqué au dessus et ce n'est pas faute d'avoir essayé avec ton code et des modifications ! a moins que je n'ai pas compris la méthode exacte
Commenter la réponse de cs_Fripouil
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
7 mai 2017 à 21:46
0
Merci
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"
Commenter la réponse de cs_ShayW
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
8 mai 2017
7 mai 2017 à 21:59
0
Merci
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.
Commenter la réponse de cs_Fripouil
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
8 mai 2017
7 mai 2017 à 22:01
0
Merci
PS : j'incrémente de 20 pour la bonne raison que mes 5 textbox remplies équivalent à 100% de ma progressbar
Commenter la réponse de cs_Fripouil
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
7 mai 2017 à 22:47
0
Merci
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 ?
Commenter la réponse de cs_ShayW
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
8 mai 2017
8 mai 2017 à 04:18
0
Merci
- 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


Messages postés
1710
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 novembre 2018
- 8 mai 2017 à 11:10
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
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 novembre 2018
>
Messages postés
1710
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 novembre 2018
- 8 mai 2017 à 11:50
C'est ce que j'ai conseillé dans ma 2ième réponse, visiblement, en vain.
Messages postés
1710
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 novembre 2018
>
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 novembre 2018
- 8 mai 2017 à 13:28
bonjour NHenry
Exact je n'avais pas fait attention
Mille excuses et salutations à toi
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
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
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
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
Commenter la réponse de cs_Fripouil
Messages postés
12272
Date d'inscription
mardi 11 mars 2003
Dernière intervention
21 novembre 2018
8 mai 2017 à 15:11
0
Merci
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

Messages postés
175
Date d'inscription
lundi 16 décembre 2002
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
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
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
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.