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

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

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. salut, je n'ai pas compris ce qu'est le contenu du controle d 'affichage .
      1. Par exemple avec un label
        double monResultat = 27.3;
        MonLabel.Text = monResulat.ToString();
        

    2. je voudrais savoir où je dois poser mes conditions
      1. 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.
      2. 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>
    3. 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).
      1. ah d'accord ! je fais tout sur le bouton ? même les declarations de variables ?
    4. 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.

      1. 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
        1. 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.

          --
        2. est ce que mon nouveau code est approprié ?
        3. 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
          
        4. d'accord je vois , merci beaucoup de votre patience !
      2. 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.

        --