Calculer et afficher les calculs d'une moyenne

CPoirier Messages postés 13 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 16 janvier 2008 - 25 déc. 2007 à 22:35
CPoirier Messages postés 13 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 16 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.

Merci à l'avance, CPoirier

6 réponses

Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
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.

Bon courage.
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
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

 Pourapprendretoujoursplus!
0
CPoirier Messages postés 13 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 16 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:



TextBox24.Text = "Calculation of " + NameR.Text & vbCrLf & "( " + Data1.Text + " + " + Data2.Text + " + " + Data3.Text + " )" + " / "(Data1tv + Data2tv + Data3tv) + "=" + Result

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.


Merci, CPoirier
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
30 déc. 2007 à 16:36
Salut
Pour concaténer des chaines, utilise &, et pas +.

 Pourapprendretoujoursplus!
0

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

Posez votre question
CPoirier Messages postés 13 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 16 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 ?
0
CPoirier Messages postés 13 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 16 janvier 2008
31 déc. 2007 à 19:40
Ah je viens de comprendre...

Le Else n'a pas affaire là.


Merci pour votre aide


CPoirier
0
Rejoignez-nous