CALCUL IMC

cs_alpha5 Messages postés 74 Date d'inscription jeudi 10 août 2006 Statut Membre Dernière intervention 24 mars 2013 - 26 oct. 2012 à 05:08
KIPRE74 Messages postés 120 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 21 novembre 2013 - 29 oct. 2012 à 09:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54682-calcul-imc

KIPRE74 Messages postés 120 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 21 novembre 2013
29 oct. 2012 à 09:55
ok ADN56
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
28 oct. 2012 à 08:37
nan ok avec If Not (IsNumeric)..exit sub, ce que je veux dire c'est que l'user ne pigera pas forcément si par exmemple j'écris 78.5 ou 78,5 ou encore 78.5k enfin bref l'affichage ne se réinitialise pas. Et je trouve que le plus simple reste de faire comme ça : (ou alors avec une masquedbox)
bonne lecture ;)
#Region "Séparateur décimal selon les regionals settings"
Private Const LOCALE_SDECIMAL As Integer = &HE
Private Declare Auto Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Integer, ByVal LCType As Integer, ByVal lpLCData As String, ByVal cchData As Integer) As Integer
Private Declare Auto Function GetUserDefaultLCID Lib "kernel32" () As Integer

''' <summary>
''' Renvoie le séparateur décimal correspondant au Regional Settings propres au poste client
''' </summary>
''' <value></value>
''' <returns>Caractère séparateur, type Char</returns>
''' <remarks>Propriété en lecture seule</remarks>
Public ReadOnly Property Separator() As Char
Get
'vérifié à chaque usage
Dim sSeparator As String = " "
GetLocaleInfo(GetUserDefaultLCID, LOCALE_SDECIMAL, sSeparator, 1)
Return sSeparator(0)
End Get
End Property

#End Region '(code de PCPT)

Private Sub txt_credit_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_credit.KeyPress, txt_debit.KeyPress
'interdit le coller
If e.KeyChar.Equals(Convert.ToChar(22)) Then
e.Handled = True
Else
Dim sAccept As String = "0123456789.," & Convert.ToChar(Keys.Back).ToString
Dim bFound As Boolean = False
For i As Integer = 0 To sAccept.Length - 1
If sAccept(i) = e.KeyChar Then
'virgule = point, ou l'inverse
If (e.KeyChar.Equals("."c) And Me.Separator.Equals(","c)) _
Or (e.KeyChar.Equals(","c) And Me.Separator.Equals("."c)) _
Then
e.KeyChar = Me.Separator
End If

bFound = True
Exit For
End If
Next

If Not bFound Then
e.Handled = True
Else
'exception quand même pour le multipoints
If DirectCast(sender, System.Windows.Forms.TextBox).Text.Contains(Me.Separator) AndAlso e.KeyChar.Equals(Me.Separator) Then
e.Handled = True
End If
End If
End If

End Sub 'gére la saisie des textbox crédit et débit (code de PCPT)
KIPRE74 Messages postés 120 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 21 novembre 2013
27 oct. 2012 à 22:50
Si tu tapes des lettre tu auras un message d'erreur !
"Entrez une valeur numérique pour le poids" ou "Entrez une valeur numérique pour la taille"
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
27 oct. 2012 à 20:51
aie aie !
si je tape des lettres il se passe quoi ?
KIPRE74 Messages postés 120 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 21 novembre 2013
27 oct. 2012 à 15:48
Merci à toi ALPHAS
cs_alpha5 Messages postés 74 Date d'inscription jeudi 10 août 2006 Statut Membre Dernière intervention 24 mars 2013
26 oct. 2012 à 05:08
Bravo! idéal pour tout le monde
excellent code
Rejoignez-nous