Recuperer une valeur particulière d'un form dans un autre

Résolu
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 28 févr. 2011 à 09:28
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 1 mars 2011 à 11:51
Bonjour,
J'ai une appli qui possède 2 Forms

Je rencontre 2 petit soucis

1/pour recuperer une valeur du form1 au form2
d'habitude, je fais :
ma_textbox_qui_recupere.Text = .ma_textbox_à_recuperer.ToString("0.00")

et cela fonctionne sans problème

au cas précis, j'ai le textbox "age" qui calcule une valeur âge avec les paramètres suivants :
Private Sub TxtNAISSANCE_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtNAISSANCE.Leave
        If Verificationdate() = False Then
            MessageBox.Show("La date de naissance du patient est incorrecte", "Erreur saisie", MessageBoxButtons.OK, MessageBoxIcon.Error)
            TxtNAISSANCE.Text = ""
            TxtNAISSANCE.Refresh()
            Exit Sub
        End If
        TextAge.Text = CalculAge(TxtNAISSANCE.Text).ToString
    End Sub


ce textbox situé dans le form1 calcule l'age des que le textbox precedant (naissance) perd le focus. Je n'ai donc pas d'action de tabulation a faire, je rentre la date de naissance,je tabule, l'age se calcule tout seul et

eh bien je cherche a recuperer cette valeur d'âge dans mon form2 sachant que la méthode que j'utilise ne fonctionne pas mais me donne a chaque fois "0.00"

2/ dans cette meme appli, je veux limiter certaines valeurs a 2 chiffres après la virgule, j'ai donc fait par exemple :
Toto.Text = .valtoto.ToString("0.00")
pour avoir 2 chiffres maxi après la virgule

cela fonctionne mais je voudrais aussi que cela fonctionne en saisie, par exemple:
je saisis ma valeur "toto" a 45, je voudrais que dans le textbox la valeur s'affiche en 45.00
en VB6 je savais faire mais en VB.NET ........

Merci bien a tous

12 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 mars 2011 à 09:46
Salut

Private Sub toto_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles toto.LostFocus
        Dim sp As String
        sp = 1 / 2
        sp = sp.Substring(1, 1)
        Dim rs As String

        Try
            Double.Parse(toto.Text)
            toto.Text = Double.Parse(toto.Text).ToString("#0.00#")
            rs = toto.Text.Substring(toto.Text.IndexOf(sp))
            If rs.Length - 1 > 2 Then
                MessageBox.Show("plus de 2 chiffre après" & sp)
                Exit Sub
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 févr. 2011 à 12:10
Salut
essaie ça

Label1.Text = "45"
        Try
            Double.Parse(Label1.Text)
            Label1.Text = Double.Parse(Label1.Text).ToString("#0.00#")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 févr. 2011 à 12:12
corrige
 Label1.Text = "45"
        Try
            Label1.Text = Double.Parse(Label1.Text).ToString("#0.00#")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 févr. 2011 à 12:44
salut ShayW,
Merci, je teste ... pour info, 45 n'est pas une valeur figée, je rentre ce que je veux dans cette textbox, le but est que la textbox ajoute elle même le .00 ou le ,00 si il n'est pas entre, ceci pour harmoniser toutes les textbox
0

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

Posez votre question
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 févr. 2011 à 12:45
pas de changement, je n'ai toujours pas de decimale automatique
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 févr. 2011 à 13:22
Concernant mon problème de mise en page des données chiffrées.

Le log procède actuellement en 2 etapes :
- A la saisie des données a entrer, j'ai :
mabox.Text = mabox.Text.Replace(".", ",")
qui fait accepter donc la "," ou le "."

- Une fois tout saisi, mon bouton calcul génère la mise en forme quand on clique dessus par :
C.Text = valC.ToString("0.00")
qui met donc les 2 chiffres après la virgule

Ce que j'amerais, c'est faire tout d'un coup en une seule et même instruction a la saisie des données

voila, j'arrive a "dissequer le souci" mais pas à le regler .......
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 févr. 2011 à 14:17
dans toto tu n'as que des nombres ?
si oui donc ça doit marcher
le code d'en haut avec Label1.Text = "45"
c'est pour tester seulement
donc avec toto ça ,marche qu'à condition dans toto tu as un nombre
Try
           toto.Text = Double.Parse(toto.Text).ToString("#0.00#")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 févr. 2011 à 14:20
il faut placer le code après avoir inserer une
valeur dans le textbox toto
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 févr. 2011 à 14:43
Ben non ca ne marche pas, j'ai mon initialisation ici (exemple pour la Textbox TOTO qui ne contient que des chiffres :
 Private Sub Calcul_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Calcul.Click

        ' on accepte aussi bien la virgule que le point pour les nombres décimaux
        TOTO.Text = TOTO.Text.Replace(".", ",")
        ...........
        .ValTOTO = Convert.ToDouble(TOTO.Text)
            If TOTO.Text.Length - TOTO.Text.IndexOf(",") > 3 Then
                MessageBox.Show("le paramètre TOTO a plus de 2 chiffres après la virgule", "Erreur saisie", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Exit Sub
            End If
            TOTO.Text =  .valTOTO.ToString("0.00") ' 2 chiffres après la virgule


Cela me fait la chose suivante :
- je saisis les données
- Si le nombre a plus de 2 chiffres après la virgule, msgbox
- Sinon saisie des autres nombres
- Lorsque je clique sur "calcul" ==> mise en forme de TOTO avec 2 chiffres après la virgule

Ce que je veux moi c'est :
- Je saisis la donnée
- des que je tabule pour passer à l'autre donnée, la première se met en forme avec les 2 chiffres après la virgule
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 févr. 2011 à 15:33
TOTO.Text = TOTO.Text.Replace(".", ",")

si le séparateur décimal est un . ?

donc je propose

Private Sub calcul_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles calcul.Click
        Dim sp As String
        sp = 1 / 2
        sp = sp.Substring(1, 1)
        Dim rs As String

        Try
            Double.Parse(toto.Text)
            toto.Text = Double.Parse(toto.Text).ToString("#0.00#")
            rs = toto.Text.Substring(toto.Text.IndexOf(sp))
            If rs.Length - 1 > 2 Then
                MessageBox.Show("plus de 2 chiffre après" & sp)
                Exit Sub
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
1 mars 2011 à 09:31
bonjour ShayW

Merci pour tes lumières mais j'ai toujours un problème car après test, il fait effectivement ce que je veux mais .... toujours sur click du bouton calcul, alors que moi, je veux la mise en forme des que la textbox concernée perd le focus.
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
1 mars 2011 à 11:51
Ca y est, cela fonctionne comme je voulais
J'ai du tout adapter le code du bouton calcul, textbox par textbox et adapter le tien pour chaque textbox mais je suis satisfait du résultat .
Encore mille merci
0
Rejoignez-nous