Bonjour
j'ai cette procédure qui fonctionne, mais le pb est que dans les texbox
lorsque je tape un montant, cela me met un point à la place des virgules
dans les textbox, mais si je saisi
un montant avec une virgule, cela ne me donne pas un calcul cohérent dans le
textbox comment faire ?
Merci beaucoup
Flo riant
Private Sub TextBox201_Change()
résultat
End Sub
Private Sub TextBox202_Change()
résultat
End Sub
Sub résultat()
TextBox214 = Val(Me.TextBox201) + Val(Me.TextBox202)
End sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Bonsoir. Regarde l'aide de la fonction Val : "La fonction Val ne reconnaît que le point comme séparateur décimal (.). Lors de l'utilisation d'autres séparateurs décimaux (applications internationales, par exemple), convertissez la chaîne en nombre à l'aide de la fonction CDbl" Cordialement. Daniel "Florian" a écrit dans le message de news:
Bonjour j'ai cette procédure qui fonctionne, mais le pb est que dans les texbox lorsque je tape un montant, cela me met un point à la place des virgules dans les textbox, mais si je saisi un montant avec une virgule, cela ne me donne pas un calcul cohérent dans le textbox comment faire ? Merci beaucoup Flo riant
Private Sub TextBox201_Change() résultat End Sub Private Sub TextBox202_Change() résultat End Sub
Sub résultat() TextBox214 = Val(Me.TextBox201) + Val(Me.TextBox202) End sub
Bonsoir.
Regarde l'aide de la fonction Val :
"La fonction Val ne reconnaît que le point comme séparateur décimal (.).
Lors de l'utilisation d'autres séparateurs décimaux (applications
internationales, par exemple), convertissez la chaîne en nombre à l'aide de
la fonction CDbl"
Cordialement.
Daniel
"Florian" <florian@toto.fr> a écrit dans le message de news:
uXmJxmNeFHA.2288@TK2MSFTNGP14.phx.gbl...
Bonjour
j'ai cette procédure qui fonctionne, mais le pb est que dans les texbox
lorsque je tape un montant, cela me met un point à la place des virgules
dans les textbox, mais si je saisi
un montant avec une virgule, cela ne me donne pas un calcul cohérent dans
le textbox comment faire ?
Merci beaucoup
Flo riant
Private Sub TextBox201_Change()
résultat
End Sub
Private Sub TextBox202_Change()
résultat
End Sub
Sub résultat()
TextBox214 = Val(Me.TextBox201) + Val(Me.TextBox202)
End sub
Bonsoir. Regarde l'aide de la fonction Val : "La fonction Val ne reconnaît que le point comme séparateur décimal (.). Lors de l'utilisation d'autres séparateurs décimaux (applications internationales, par exemple), convertissez la chaîne en nombre à l'aide de la fonction CDbl" Cordialement. Daniel "Florian" a écrit dans le message de news:
Bonjour j'ai cette procédure qui fonctionne, mais le pb est que dans les texbox lorsque je tape un montant, cela me met un point à la place des virgules dans les textbox, mais si je saisi un montant avec une virgule, cela ne me donne pas un calcul cohérent dans le textbox comment faire ? Merci beaucoup Flo riant
Private Sub TextBox201_Change() résultat End Sub Private Sub TextBox202_Change() résultat End Sub
Sub résultat() TextBox214 = Val(Me.TextBox201) + Val(Me.TextBox202) End sub
Philippe Noss
Bonsoir, la macro ci joint explique comment n'autoriser dans un textbox que des valeurs numérique + le separateur decimal A etudier ! PN www.exefac.com Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) KeyAscii = TxtBoxNum(KeyAscii, TextBox4, Ctldec, Nbdec) End Sub
Function TxtBoxNum(ByVal Casci As Integer, ByVal TextboxV, Ctldec, Nbdec) Dim SepDec As String 'On recherche tout d'abord le séparateur décimal SepDec = Application.International(xlDecimalSeparator)
'1. On remplace la virgule ou le point par le séparateur décimal (Asc convertit le caractère en Ascii) If Casci = 44 Or Casci = 46 Then Casci = Asc(SepDec) End If
'On teste si le caractère est le séparateur décimal : '2.Le caractère n'est pas le séparateur décimal : If Casci <> Asc(SepDec) Then 'si caractère non numérique, on le remplace par la valeur Ascii 0 If Casci < 48 Or Casci > 57 Then TxtBoxNum = 0 Exit Function End If 'Si caractère numérique, on compte le cas échéant (Nbdec <> False) le nombre de décimale. 'Si le nombre de décimale est supérieur à la limite de Nbdec, on le remplace par la valeur Ascii 0 If Ctldec = True And TextboxV <> "" And InStr(1, TextboxV, SepDec, 1) > 0 Then If Len(Mid(TextboxV, InStr(1, TextboxV, SepDec, 1))) > Nbdec Then TxtBoxNum = 0 Exit Function End If End If
'3.Le caractère est le séparateur décimal : Else 'Si le textbox contient déja un séparateur, on revoie le code de caractère de la touche If InStr(1, TextboxV, SepDec, 1) > 0 Then TxtBoxNum = 0 Exit Function End If End If '4. pas d'"erreur", on revoie le code de caractère de la touche TxtBoxNum = Casci End Function
Bonsoir,
la macro ci joint explique comment n'autoriser dans un textbox que des
valeurs numérique + le separateur decimal
A etudier !
PN
www.exefac.com
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = TxtBoxNum(KeyAscii, TextBox4, Ctldec, Nbdec)
End Sub
Function TxtBoxNum(ByVal Casci As Integer, ByVal TextboxV, Ctldec,
Nbdec)
Dim SepDec As String
'On recherche tout d'abord le séparateur décimal
SepDec = Application.International(xlDecimalSeparator)
'1. On remplace la virgule ou le point par le séparateur décimal (Asc
convertit le caractère en Ascii)
If Casci = 44 Or Casci = 46 Then
Casci = Asc(SepDec)
End If
'On teste si le caractère est le séparateur décimal :
'2.Le caractère n'est pas le séparateur décimal :
If Casci <> Asc(SepDec) Then
'si caractère non numérique, on le remplace par la valeur Ascii 0
If Casci < 48 Or Casci > 57 Then
TxtBoxNum = 0
Exit Function
End If
'Si caractère numérique, on compte le cas échéant (Nbdec <> False)
le nombre de décimale.
'Si le nombre de décimale est supérieur à la limite de Nbdec, on le
remplace par la valeur Ascii 0
If Ctldec = True And TextboxV <> "" And InStr(1, TextboxV, SepDec,
1) > 0 Then
If Len(Mid(TextboxV, InStr(1, TextboxV, SepDec, 1))) > Nbdec
Then
TxtBoxNum = 0
Exit Function
End If
End If
'3.Le caractère est le séparateur décimal :
Else
'Si le textbox contient déja un séparateur, on revoie le code de
caractère de la touche
If InStr(1, TextboxV, SepDec, 1) > 0 Then
TxtBoxNum = 0
Exit Function
End If
End If
'4. pas d'"erreur", on revoie le code de caractère de la touche
TxtBoxNum = Casci
End Function
Bonsoir, la macro ci joint explique comment n'autoriser dans un textbox que des valeurs numérique + le separateur decimal A etudier ! PN www.exefac.com Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) KeyAscii = TxtBoxNum(KeyAscii, TextBox4, Ctldec, Nbdec) End Sub
Function TxtBoxNum(ByVal Casci As Integer, ByVal TextboxV, Ctldec, Nbdec) Dim SepDec As String 'On recherche tout d'abord le séparateur décimal SepDec = Application.International(xlDecimalSeparator)
'1. On remplace la virgule ou le point par le séparateur décimal (Asc convertit le caractère en Ascii) If Casci = 44 Or Casci = 46 Then Casci = Asc(SepDec) End If
'On teste si le caractère est le séparateur décimal : '2.Le caractère n'est pas le séparateur décimal : If Casci <> Asc(SepDec) Then 'si caractère non numérique, on le remplace par la valeur Ascii 0 If Casci < 48 Or Casci > 57 Then TxtBoxNum = 0 Exit Function End If 'Si caractère numérique, on compte le cas échéant (Nbdec <> False) le nombre de décimale. 'Si le nombre de décimale est supérieur à la limite de Nbdec, on le remplace par la valeur Ascii 0 If Ctldec = True And TextboxV <> "" And InStr(1, TextboxV, SepDec, 1) > 0 Then If Len(Mid(TextboxV, InStr(1, TextboxV, SepDec, 1))) > Nbdec Then TxtBoxNum = 0 Exit Function End If End If
'3.Le caractère est le séparateur décimal : Else 'Si le textbox contient déja un séparateur, on revoie le code de caractère de la touche If InStr(1, TextboxV, SepDec, 1) > 0 Then TxtBoxNum = 0 Exit Function End If End If '4. pas d'"erreur", on revoie le code de caractère de la touche TxtBoxNum = Casci End Function
Florian
Bonsoir Daniel et merci pour ton aide. Malheureusement, le fait de mettre Cdbl à la place de Val me renvoie une erreur d'exécution 13 Flo riant
"Daniel" a écrit dans le message de news: %
Bonsoir. Regarde l'aide de la fonction Val : "La fonction Val ne reconnaît que le point comme séparateur décimal (.). Lors de l'utilisation d'autres séparateurs décimaux (applications internationales, par exemple), convertissez la chaîne en nombre à l'aide de la fonction CDbl" Cordialement. Daniel "Florian" a écrit dans le message de news:
Bonjour j'ai cette procédure qui fonctionne, mais le pb est que dans les texbox lorsque je tape un montant, cela me met un point à la place des virgules dans les textbox, mais si je saisi un montant avec une virgule, cela ne me donne pas un calcul cohérent dans le textbox comment faire ? Merci beaucoup Flo riant
Private Sub TextBox201_Change() résultat End Sub Private Sub TextBox202_Change() résultat End Sub
Sub résultat() TextBox214 = Val(Me.TextBox201) + Val(Me.TextBox202) End sub
Bonsoir Daniel et merci pour ton aide.
Malheureusement, le fait de mettre Cdbl à la place de Val
me renvoie une erreur d'exécution 13
Flo riant
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
%23EXKB8OeFHA.1040@TK2MSFTNGP10.phx.gbl...
Bonsoir.
Regarde l'aide de la fonction Val :
"La fonction Val ne reconnaît que le point comme séparateur décimal (.).
Lors de l'utilisation d'autres séparateurs décimaux (applications
internationales, par exemple), convertissez la chaîne en nombre à l'aide
de la fonction CDbl"
Cordialement.
Daniel
"Florian" <florian@toto.fr> a écrit dans le message de news:
uXmJxmNeFHA.2288@TK2MSFTNGP14.phx.gbl...
Bonjour
j'ai cette procédure qui fonctionne, mais le pb est que dans les texbox
lorsque je tape un montant, cela me met un point à la place des virgules
dans les textbox, mais si je saisi
un montant avec une virgule, cela ne me donne pas un calcul cohérent dans
le textbox comment faire ?
Merci beaucoup
Flo riant
Private Sub TextBox201_Change()
résultat
End Sub
Private Sub TextBox202_Change()
résultat
End Sub
Sub résultat()
TextBox214 = Val(Me.TextBox201) + Val(Me.TextBox202)
End sub
Bonsoir Daniel et merci pour ton aide. Malheureusement, le fait de mettre Cdbl à la place de Val me renvoie une erreur d'exécution 13 Flo riant
"Daniel" a écrit dans le message de news: %
Bonsoir. Regarde l'aide de la fonction Val : "La fonction Val ne reconnaît que le point comme séparateur décimal (.). Lors de l'utilisation d'autres séparateurs décimaux (applications internationales, par exemple), convertissez la chaîne en nombre à l'aide de la fonction CDbl" Cordialement. Daniel "Florian" a écrit dans le message de news:
Bonjour j'ai cette procédure qui fonctionne, mais le pb est que dans les texbox lorsque je tape un montant, cela me met un point à la place des virgules dans les textbox, mais si je saisi un montant avec une virgule, cela ne me donne pas un calcul cohérent dans le textbox comment faire ? Merci beaucoup Flo riant
Private Sub TextBox201_Change() résultat End Sub Private Sub TextBox202_Change() résultat End Sub
Sub résultat() TextBox214 = Val(Me.TextBox201) + Val(Me.TextBox202) End sub
Florian
Ok merci Philippe je teste Flo riant
"Philippe Noss" a écrit dans le message de news:
Bonsoir, la macro ci joint explique comment n'autoriser dans un textbox que des valeurs numérique + le separateur decimal A etudier ! PN www.exefac.com Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) KeyAscii = TxtBoxNum(KeyAscii, TextBox4, Ctldec, Nbdec) End Sub
Function TxtBoxNum(ByVal Casci As Integer, ByVal TextboxV, Ctldec, Nbdec) Dim SepDec As String 'On recherche tout d'abord le séparateur décimal SepDec = Application.International(xlDecimalSeparator)
'1. On remplace la virgule ou le point par le séparateur décimal (Asc convertit le caractère en Ascii) If Casci = 44 Or Casci = 46 Then Casci = Asc(SepDec) End If
'On teste si le caractère est le séparateur décimal : '2.Le caractère n'est pas le séparateur décimal : If Casci <> Asc(SepDec) Then 'si caractère non numérique, on le remplace par la valeur Ascii 0 If Casci < 48 Or Casci > 57 Then TxtBoxNum = 0 Exit Function End If 'Si caractère numérique, on compte le cas échéant (Nbdec <> False) le nombre de décimale. 'Si le nombre de décimale est supérieur à la limite de Nbdec, on le remplace par la valeur Ascii 0 If Ctldec = True And TextboxV <> "" And InStr(1, TextboxV, SepDec, 1) > 0 Then If Len(Mid(TextboxV, InStr(1, TextboxV, SepDec, 1))) > Nbdec Then TxtBoxNum = 0 Exit Function End If End If
'3.Le caractère est le séparateur décimal : Else 'Si le textbox contient déja un séparateur, on revoie le code de caractère de la touche If InStr(1, TextboxV, SepDec, 1) > 0 Then TxtBoxNum = 0 Exit Function End If End If '4. pas d'"erreur", on revoie le code de caractère de la touche TxtBoxNum = Casci End Function
Ok merci Philippe
je teste
Flo riant
"Philippe Noss" <exefac@exefac.com> a écrit dans le message de news:
1119639746.351981.106300@g49g2000cwa.googlegroups.com...
Bonsoir,
la macro ci joint explique comment n'autoriser dans un textbox que des
valeurs numérique + le separateur decimal
A etudier !
PN
www.exefac.com
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = TxtBoxNum(KeyAscii, TextBox4, Ctldec, Nbdec)
End Sub
Function TxtBoxNum(ByVal Casci As Integer, ByVal TextboxV, Ctldec,
Nbdec)
Dim SepDec As String
'On recherche tout d'abord le séparateur décimal
SepDec = Application.International(xlDecimalSeparator)
'1. On remplace la virgule ou le point par le séparateur décimal (Asc
convertit le caractère en Ascii)
If Casci = 44 Or Casci = 46 Then
Casci = Asc(SepDec)
End If
'On teste si le caractère est le séparateur décimal :
'2.Le caractère n'est pas le séparateur décimal :
If Casci <> Asc(SepDec) Then
'si caractère non numérique, on le remplace par la valeur Ascii 0
If Casci < 48 Or Casci > 57 Then
TxtBoxNum = 0
Exit Function
End If
'Si caractère numérique, on compte le cas échéant (Nbdec <> False)
le nombre de décimale.
'Si le nombre de décimale est supérieur à la limite de Nbdec, on le
remplace par la valeur Ascii 0
If Ctldec = True And TextboxV <> "" And InStr(1, TextboxV, SepDec,
1) > 0 Then
If Len(Mid(TextboxV, InStr(1, TextboxV, SepDec, 1))) > Nbdec
Then
TxtBoxNum = 0
Exit Function
End If
End If
'3.Le caractère est le séparateur décimal :
Else
'Si le textbox contient déja un séparateur, on revoie le code de
caractère de la touche
If InStr(1, TextboxV, SepDec, 1) > 0 Then
TxtBoxNum = 0
Exit Function
End If
End If
'4. pas d'"erreur", on revoie le code de caractère de la touche
TxtBoxNum = Casci
End Function
Bonsoir, la macro ci joint explique comment n'autoriser dans un textbox que des valeurs numérique + le separateur decimal A etudier ! PN www.exefac.com Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) KeyAscii = TxtBoxNum(KeyAscii, TextBox4, Ctldec, Nbdec) End Sub
Function TxtBoxNum(ByVal Casci As Integer, ByVal TextboxV, Ctldec, Nbdec) Dim SepDec As String 'On recherche tout d'abord le séparateur décimal SepDec = Application.International(xlDecimalSeparator)
'1. On remplace la virgule ou le point par le séparateur décimal (Asc convertit le caractère en Ascii) If Casci = 44 Or Casci = 46 Then Casci = Asc(SepDec) End If
'On teste si le caractère est le séparateur décimal : '2.Le caractère n'est pas le séparateur décimal : If Casci <> Asc(SepDec) Then 'si caractère non numérique, on le remplace par la valeur Ascii 0 If Casci < 48 Or Casci > 57 Then TxtBoxNum = 0 Exit Function End If 'Si caractère numérique, on compte le cas échéant (Nbdec <> False) le nombre de décimale. 'Si le nombre de décimale est supérieur à la limite de Nbdec, on le remplace par la valeur Ascii 0 If Ctldec = True And TextboxV <> "" And InStr(1, TextboxV, SepDec, 1) > 0 Then If Len(Mid(TextboxV, InStr(1, TextboxV, SepDec, 1))) > Nbdec Then TxtBoxNum = 0 Exit Function End If End If
'3.Le caractère est le séparateur décimal : Else 'Si le textbox contient déja un séparateur, on revoie le code de caractère de la touche If InStr(1, TextboxV, SepDec, 1) > 0 Then TxtBoxNum = 0 Exit Function End If End If '4. pas d'"erreur", on revoie le code de caractère de la touche TxtBoxNum = Casci End Function
AV
Quel que soit le séparateur utilisé et celui du système, ce code (avec ajustement des noms et affecté à un bouton) devrait suffire
Private Sub CommandButton1_Click() x = Application.International(xlDecimalSeparator) txt1 = Application.Substitute(Application.Substitute(TextBox1, ",", x), ".", x) * 1 txt2 = Application.Substitute(Application.Substitute(TextBox2, ",", x), ".", x) * 1 TextBox3 = txt1 + txt2 End Sub
Exemple là : http://cjoint.com/?gzh2AI7oNJ
AV
Quel que soit le séparateur utilisé et celui du système, ce code (avec
ajustement des noms et affecté à un bouton) devrait suffire
Private Sub CommandButton1_Click()
x = Application.International(xlDecimalSeparator)
txt1 = Application.Substitute(Application.Substitute(TextBox1, ",", x), ".", x)
* 1
txt2 = Application.Substitute(Application.Substitute(TextBox2, ",", x), ".", x)
* 1
TextBox3 = txt1 + txt2
End Sub