Problème avec le windows form (visual studio basic)

Fermé
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015 - Modifié par jmarion3 le 17/09/2014 à 05:56
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 17 sept. 2014 à 19:37
Bonjour, je dois faire l'exercice suivant :

Une entreprise de distribution a décidé de donner des primes à chacun de ses employés selon le chiffre d'affaire qu'il a réalisé. Ces primes sont distribuées selon les critères suivants:


Si ventes < 2000$ prime=0%

Si 2000$<=ventes <5000$ prime=2.5 %

Si 5000$ <= ventes < 8000$ prime = 4.5 %

Si ventes >= 8000$ prime=6.2 %

Écrivez une application Windows qui nous permet de calculer ces primes.

Le problème est que je n'ai pas d'idée comment faire . Je maîtrise la console , mais pas du tout la windows form.. Pouvez-vous m'aider , c'est plutôt urgent


Merci beaucoup
A voir également:

7 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 sept. 2014 à 07:32
Bonjour, et bien c'est simple.

Tu démarres un projet windows form.
Sur le formulaire tu déposes:
-un contrôle qui permettra la saisie du chiffre (textbox par exemple)
-un contrôle qui permettra l'affichage du résultat (label par exemple)
-et un bouton pour lancer le calcul.

Tu double cliques sur le bouton, VS va basculer du côté code du formulaire, dans la méthode associée à l'événement par défaut du bouton, soit le simple click.
Là tu tapes presque le même code que tu aurais écris en console. La différence est qu'à la place de readline, il faut récupérer le contenu du contrôle de saisie (propriété Text) et qu'à la place de writeline il faut affecter le contenu du contrôle d'affichage.
0
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015
17 sept. 2014 à 14:04
salut, je n'ai pas compris ce qu'est le contenu du controle d 'affichage .
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 sept. 2014 à 17:50
Par exemple avec un label
double monResultat = 27.3;
MonLabel.Text = monResulat.ToString();

0
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015
17 sept. 2014 à 17:37
je voudrais savoir où je dois poser mes conditions
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 sept. 2014 à 17:52
Comme je l'ai de j'ai écrite

Tu double cliques sur le bouton, VS va basculer du côté code du formulaire, dans la méthode associée à l'événement par défaut du bouton, soit le simple click.
Là tu tapes presque le même code que tu aurais écris en console. La différence est qu'à la place de readline, il faut récupérer le contenu du contrôle de saisie (propriété Text) et qu'à la place de writeline il faut affecter le contenu du contrôle d'affichage.
0
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015
17 sept. 2014 à 18:09
je suis complétement paumé . voici ce que j'ai fait

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dblventes As Double
Dim dblresultat As Double
Dim dblprime As Double
dblventes = txtventes.Text
End Sub


Private Sub txtresultat_Click(sender As Object, e As EventArgs) Handles txtresultat.Click

MessageBox.Show("votre prime est de :" & txtresultat.Text)
End Sub<code basic>
</code>
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 sept. 2014 à 18:42
Ha donc c'est du VB.net....

Puisque tu maitrise le mode console, je ne reviens pas sur les événements.

L'événement load se produit au moment du chargement du formulaire, il n'est pas encore affiché.
C'est à ce moment la que l'on peux initialiser l'application (connexion à la base de données, valeurs par défaut des contrôles etc...)
Ce n'est donc pas là que tu dois mettre tes calculs.

Tu as mis ton messagebox dans la méthode associée à l'événement click du textbox, cliquer sur un textbox pour voir afficher un message n'est pas très naturel.

Je t'ai dit de poser un bouton sur le formulaire et d'y faire tous tes calculs (pour une première appli ça suffit).
0
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015
Modifié par kingston2 le 17/09/2014 à 18:49
ah d'accord ! je fais tout sur le bouton ? même les declarations de variables ?
0

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

Posez votre question
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 sept. 2014 à 18:51
Oui, on va dire que ton utilisateur est assez bien câblé pour remplir les données avant de lancer les calculs, en cliquant sur le bouton.

0
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015
Modifié par kingston2 le 17/09/2014 à 19:12
Public Class Form1

Private Sub btprime_Click(sender As Object, e As EventArgs) Handles btprime.Click
Dim dblventes As Double
Dim dblprime As Double
dblventes = txtventes.Text
Select Case dblventes
Case Is < 2000
dblprime = 0
Case Is >= 2000
dblprime = 0.025
Case Is >= 5000
dblprime = 0.045
Case Is >= 8000
dblprime = 0.062

End Select
MessageBox.Show("votre prime est de :" & dblventes * dblprime)
End Sub
End Class





voici ce que j ai trouvé . ca marche mais je voudrais savoir si j'ai bien écrit



EDIT : voici mon code finale après réflexion:

Public Class Form1

Private Sub btprime_Click(sender As Object, e As EventArgs) Handles btprime.Click
Dim dblventes As Double
Dim dblprime As Double
dblventes = txtventes.Text

If dblventes < 2000 Then
dblprime = dblventes * 0
ElseIf dblventes >= 2000 And dblventes < 5000 Then
dblprime = dblventes * 0.025
ElseIf dblventes >= 5000 And dblventes < 8000 Then
dblprime = dblventes * 0.045
Else
dblprime = dblventes * 0.062

End If



MessageBox.Show("votre montant prime ajoutée est de :" & dblprime + dblventes)
End Sub
End Class
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 sept. 2014 à 19:11
C'est pas mal, il y a un petit problème.

Mets un points d'arrêt au début, lance le programme et saisit 5500, ensuite exécute pas à pas.

En observant l'ordre d'exécution des instructions tu devrais voir le problème et la solution.


--
0
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015
17 sept. 2014 à 19:21
est ce que mon nouveau code est approprié ?
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
Modifié par Whismeril le 17/09/2014 à 19:28
Non le select case est mieux, dans le sens ou c'est plus lisible et plus facile à maintenir.

Il faut juste faire attention à l'ordre dans lequel sont écrit les "case", le programme les exécute dans cet ordre, donc si ta valeur est 5500 et que >2000 est écrit avant >5000, alors il choisira > 2000.

Dans cet ordre, plus de problèmes:
        Select Case dblventes
            Case Is >= 8000
                dblprime = 0.062
            Case Is >= 5000
                dblprime = 0.045
            Case Is >= 2000
                dblprime = 0.025
            Case Is < 2000
                dblprime = 0

        End Select
0
kingston2 Messages postés 126 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 27 mai 2015
17 sept. 2014 à 19:32
d'accord je vois , merci beaucoup de votre patience !
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 sept. 2014 à 19:37
De rien, je suis patient si en face la personne essaye et c'est ton cas.

Si ta question est résolue, merci de la signaler comme telle avec le lien sous le titre de la discussion.

--
0