IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Reinitialiser variable dans Select Case


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut Reinitialiser variable dans Select Case
    Bonjour à tous,

    Je developpe une appli winFom pour estimer une facture EDF. J'ai une base de données qui recense les type d'abonnement et leur montant annuel.

    L'utilisateur utilise un combo box pour sélection le type d'abo et le montant annuel apparait dans un label.

    Ensuite j'ai un deuxième comboBox avec le nombre de mois ( de 1 a 12 ).

    Si l'utilisateur décide que son estimation porte sur 3 mois il sélectionne 3 mois et le label s'actualiser automatiquement avec le bon résultat.

    En revanche si l'utilisateur c'est trompé et que finalement il ne veut plus estimer sur 3 moi mais sur 6 par exemple, le calcule ce fait par rapport a la valeur de l'abonnement a 3 mois et non plus a un ans.

    En gros a chaque changement de données dans le comboBox mois, le calcule ce fait sur la dernière valeur du label.

    Voici mon code pour le calcule de l'abo en fonction du nombre de mois :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox_mois.SelectedIndexChanged
     
     
            If Me.Label_mt_abo.Text = Nothing Then
                MsgBox("N'oublier pas de selectionner une puissance de compteur et un type d'abonnement ", MsgBoxStyle.OkOnly)
            Else
                'resulat arrondi a 2 decimal
                Select Case Me.ComboBox_mois.SelectedIndex
     
                    Case 0
                        'resultat pour un mois par rapport au montant abonnement annuel
                        Me.Label_mt_abo.Text = Math.Round(CDbl(Me.Label_mt_abo.Text / 12), 2)
                    Case 1
                        'pour 2 mois
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 2), 2)
                    Case 2
                        'pour 3 mois ....
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 3), 2)
                    Case 3
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 4), 2)
                    Case 4
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 5), 2)
                    Case 5
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 6), 2)
                    Case 6
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 7), 2)
                    Case 7
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 8), 2)
                    Case 8
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 9), 2)
                    Case 9
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 10), 2)
                    Case 10
                        Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text / 12) * 11), 2)
                    Case 11
                        Me.Label_mt_abo.Text = Math.Round(CDbl(Me.Label_mt_abo.Text), 2)
                End Select
            End If
     
     
     
        End Sub
    Comment doit je faire pour que mon label garde ca valeur initial ?

    Merci a vous,

    cdl

    Jerome

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai pas très bien compris ce qui te posait problème, mais à quoi sert ce Select ?

    Tu pourrais faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim nbMois As Integer = Me.ComboBox_mois.SelectedIndex + 1
    Me.Label_mt_abo.Text = Math.Round(CDbl((Me.Label_mt_abo.Text) / 12 * nbMois), 2)

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut
    Merci Tomlev, effectivement ton code marche comme le mien, avec 30 ligne en moins

    Mais le fond du problème reste identique.

    J' admet que mon explication peut paraitre ambigüe. Je vais décrire un exemple concret, en espérant que ce soit plus parlant :

    L'utilisateur choisi un abonnement dans un premier comboBox :

    par exemple Abo Heure pleinne / Heure creuse.

    Cette abonnement fais référence dans ma base de données a un montant annuel.

    Celui-ci apparait après sélection de l’abonnement dans le label :

    Nous avons donc avec l'abo Hc/Hp sélectionner est un montant de 95 € inscrit dans le label.

    L'utilisateur pour desormé effectué son estimation : Il peut faire une estimation sur un ans, 1 mois, 2 mois, 3 mois ... 12 mois.

    Le choix du mois est inscrit dans un combo box : comboBoxMois

    l'utilisateur choisi 2 mois :

    le calcule est donc le suivant :

    ( 95 /12 ) * indexcomboBoxMois + 1

    Le résultat est de 15.83

    Mais l'utilisateur ces trompé, il décide de faire son estimation sur 4 mois :

    Au lieu de faire le calcule sur les 95 euros le programme effectue le calcule sur les 15.83 :

    on a donc ( 15.83 /12 ) * 4

    ce qui donne un résultat totalement faux.

    Comment entre chaque changement de mois garder la valeur du montant annuel, ici a savoir 95

    Par avance Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ah ok, je comprends ce que tu veux dire...

    Il faut que tu conserves quelque part le montant pour l'année complète, pour pouvoir refaire le calcul à partir de là. De toutes façons, ce n'est pas une bonne idée de se baser sur la valeur d'un label... un label sert à afficher des données, pas à les stocker. Déclare plutôt des variables dans ta classe qui conserveront les valeurs dont tu as besoin

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut
    Ok Merci TomLev je vais suivre ta piste et faire différent essaie. Je revient dès que j'ai trouver.

    Encore merci.

Discussions similaires

  1. Inserez une variable dans une case
    Par Tinien dans le forum Excel
    Réponses: 4
    Dernier message: 01/09/2008, 13h40
  2. [MySQL] Erreur variable dans select
    Par asmrct dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/06/2008, 16h16
  3. Réponses: 3
    Dernier message: 20/01/2008, 23h12
  4. plusieurs variable dans une 'case'
    Par vanilla94 dans le forum Langage
    Réponses: 18
    Dernier message: 30/11/2006, 09h55
  5. Réponses: 4
    Dernier message: 30/05/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo