Recuperer une valeur particulière d'un form dans un autre [Résolu]

Signaler
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
Attila54
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
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

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
corrige
 Label1.Text = "45"
        Try
            Label1.Text = Double.Parse(Label1.Text).ToString("#0.00#")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

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
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

pas de changement, je n'ai toujours pas de decimale automatique
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

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 .......
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
il faut placer le code après avoir inserer une
valeur dans le textbox toto
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
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
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

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.
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

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