CPoirier
Messages postés13Date d'inscriptionmardi 25 décembre 2007StatutMembreDernière intervention16 janvier 2008
-
25 déc. 2007 à 22:35
CPoirier
Messages postés13Date d'inscriptionmardi 25 décembre 2007StatutMembreDernière intervention16 janvier 2008
-
31 déc. 2007 à 19:40
Bonjour,
J'essaie de créer un programme me permettant de calculer une moyenne et d'en afficher les calculs afin de m'aider dans mes laboratoires.
Je dois donc compter le nombre de textbox dont l'utilisateur aura entré du texte afin de diviser la somme des données entrées par ce nombre.
J'ai essayé de faire en sorte que si la donnée entrée n'est pas égale à zéro, une variable devient 1, et si la donnée est égale à zéro, la même variable reste 0 (l'étant au départ).
Voici mon code:
If
Data1.Text <> 0
Then
Data1tv = 1
ElseIf Data2.Text <> 0
Then
Data2tv = 1
ElseIf Data3.Text <> 0
Then
Data3tv = 1
End
IfJ'ai déclaré plus haut que mes Data1,2,3tv étaient égales à zéro.
La somme de ces variables me donnerait le nombre de données entrées, mais ca ne marche pas, vb me dit : La conversion de la chaîne "" en type 'Double' n'est pas valide. Est-ce parce que vb ne considère pas un textbox vide comme étant égal à zéro ?
Et j'ai absolument besoin que mon programme me sorte les calculs, alors je ne peux que faire une fonction average.
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 26 déc. 2007 à 09:15
Salut,
Tes données sont dans des textbox (donc des string) tu as à priori déclaré tes variable en type double. La convertion n'est pas implicite. En VB.Net je fais :
Convert.ToDouble(MonTextBoxValeur1.Text)
Je pense qu'en VB c'est quasiment la même chose
Cela permet de prendre le champs texte, de la convertir en double et de faire les calculs nécessaires. Ensuite pour ton affichage, n'oublie pas de le remettre en string.
Ensuite pour l'affichage de la liste des calculs, quel objet utilises-tu ? une RichTextBox, une Listview, une listBox ???
Sans cette précision, je peux pas plus t'aider.
mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 26 déc. 2007 à 10:52
Salut.
Textbox vide équivaut à textbox.text = "", pas à 0
De plus, tu écris:
If
Data1.Text <> 0
Then
Data1tv = 1
ElseIf
Data2.Text <> 0
Then
Data2tv = 1
ElseIf
Data3.Text <> 0
Then
Data3tv = 1
End
If
Alors si je lis bien (en considérant que tu as marqué "" au lieu de 0):
si textbox1 non vide, alors ....
SINON, si textbox2 non vide, alors .....
SINON, si textbox3 non vide, alors .....
Fin si
alors si, comme je le pense, tu veux utiliser chaque Dataitv pour savoir si textboxi n'est pas vide, ça va poser un problème, sachant que si par exemple ton premier textbox n'est pas vide, aucun test sur tes autres textbox ne va être fait (tu as mis des ElseIf !!!)
Enfin, dernière remarque:
si tu te trimbales avec plein de textbox (et pas seulement 3), ça va être chiant pour toi de te taper if machin1 then truc1, if machin 2 then truc2, ....
Utilise donc des index:
Data(i) et Datatv(i)
après c'est simple, tu fais
for i=1 to NombredeTextBox
if Data(i).Text <> "" Then
Datatv(i) = 1
endif
next
CPoirier
Messages postés13Date d'inscriptionmardi 25 décembre 2007StatutMembreDernière intervention16 janvier 2008 27 déc. 2007 à 22:47
Re-bonjour,
Merci pour votre aide. Je me suis avancé un peu plus, maintenant. Cependant, Quand je fais marcher mon programme, il me dit: "L'index se trouve en dehors des limites du tableau.", et il me pointe la partie de mon code suivante:
J'ai marqué ce code pour que le programme nous affiche le calcul à faire à partir des données entrées, et des Datatv, étant égaux à un ou zéro, si une donnée a été entrée dans son textbox respectif.
CPoirier
Messages postés13Date d'inscriptionmardi 25 décembre 2007StatutMembreDernière intervention16 janvier 2008 31 déc. 2007 à 16:06
Merci pour votre aide, mais j'ai encore un petit problème.
Voici mon code:
If
Data1.Text <>
""
Then
Data1tv = 1
End
If
If Data2.Text <>
""
Then
Data2tv = 1
End
If
If Data3.Text <>
""
Then
Data3tv = 1
End
If
If Data1tv = 1
Then
D1 = Data1.Text
Else
Datatotcalc = D1
End
If
If Data2tv = 1
Then
D2 = Data2.Text
Else
Datatotcalc = D1 &
" + " & D2
End
If
If Data3tv = 1
Then
D3 = Data3.Text
Else
Datatotcalc = D1 &
" + " & D2 &
" + " & D3
End
If
Donc, si l'utilisateur a entré seulement deux données au lieu de 3, mon programme me décide quand même que :
Datatotcalc = D1 & " + " & D2 & " + " & D3
et il m'affiche :
D1 + D2 + 0 (étant donné qu'il n'y a pas de troisième donnée)
Pourquoi cela ? Je ne veux pas le + 0 à la fin, je lui dit d'additionner D3 seulement si il y a une donnée dans le textbox, non ?