OVH Cloud OVH Cloud

textbox

8 réponses
Avatar
CBR
Bonjour tlm

Une petite question concernant la mise en forme d'une textbox.

Dans un userform j'ais des textbox destiné à acceuillir des chiffres avec
décimales. Comment limité ces dècimales au nombres de trois maxi ?


Merci de votre aide

a+
CBR

8 réponses

Avatar
JLuc
CBR avait soumis l'idée :
Bonjour tlm

Une petite question concernant la mise en forme d'une textbox.

Dans un userform j'ais des textbox destiné à acceuillir des chiffres avec
décimales. Comment limité ces dècimales au nombres de trois maxi ?


Merci de votre aide

a+
CBR


Textbox1 = Round(Textbox1 * 1000, 0) / 1000

Avatar
ChrisV
Bonjour CBR,

With TextBox1
On Error Resume Next
.Value = CDbl(.Value)
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ",", "."))
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ".", ","))
If IsNumeric(.Value) Then
.Value = Format(.Value, "# ##0.000")
Else
.Value = ""
MsgBox "Format non-valide !", vbCritical, "ERREUR..."
.SetFocus
Exit Sub
End If
End With


ChrisV


"CBR" a écrit dans le message de news:
43945163$0$20839$
Bonjour tlm

Une petite question concernant la mise en forme d'une textbox.

Dans un userform j'ais des textbox destiné à acceuillir des chiffres avec
décimales. Comment limité ces dècimales au nombres de trois maxi ?


Merci de votre aide

a+
CBR



Avatar
Denys
Bonjour CBR,

If Left(Right(Me.TextBox1.Text, 3), 1) = "." Then KeyAscii = 0

Bonne journée

Denys



Bonjour CBR,

With TextBox1
On Error Resume Next
.Value = CDbl(.Value)
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ",", "."))
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ".", ","))
If IsNumeric(.Value) Then
.Value = Format(.Value, "# ##0.000")
Else
.Value = ""
MsgBox "Format non-valide !", vbCritical, "ERREUR..."
.SetFocus
Exit Sub
End If
End With


ChrisV


"CBR" a écrit dans le message de news:
43945163$0$20839$
Bonjour tlm

Une petite question concernant la mise en forme d'une textbox.

Dans un userform j'ais des textbox destiné à acceuillir des chiffres avec
décimales. Comment limité ces dècimales au nombres de trois maxi ?


Merci de votre aide

a+
CBR








Avatar
CBR
J'ais essayé les 2 soluces, aucune ne marche ????
Vous les mettez où ces lignes ? Dans Sub textbox1_change ? ou ailleur ?

CBR


"Denys" a écrit dans le message de news:

Bonjour CBR,

If Left(Right(Me.TextBox1.Text, 3), 1) = "." Then KeyAscii = 0

Bonne journée

Denys



Bonjour CBR,

With TextBox1
On Error Resume Next
.Value = CDbl(.Value)
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ",", "."))
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ".", ","))
If IsNumeric(.Value) Then
.Value = Format(.Value, "# ##0.000")
Else
.Value = ""
MsgBox "Format non-valide !", vbCritical, "ERREUR..."
.SetFocus
Exit Sub
End If
End With


ChrisV


"CBR" a écrit dans le message de news:
43945163$0$20839$
Bonjour tlm

Une petite question concernant la mise en forme d'une textbox.

Dans un userform j'ais des textbox destiné à acceuillir des chiffres
avec
décimales. Comment limité ces dècimales au nombres de trois maxi ?


Merci de votre aide

a+
CBR










Avatar
Denys
Bonjour CBR,

OOOoooppppsss... s'cuse-moi

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next
If KeyAscii < 46 Or KeyAscii > 57 Then
KeyAscii = 0
End If
If Left(Right(Me.TextBox9.Text, 3), 1) = "." Then KeyAscii = 0
End Sub

La condition KeyAscii est pour empêcher d'écrire autre chose qu'un chiffre...

Voilà

Denys


J'ais essayé les 2 soluces, aucune ne marche ????
Vous les mettez où ces lignes ? Dans Sub textbox1_change ? ou ailleur ?

CBR


"Denys" a écrit dans le message de news:

Bonjour CBR,

If Left(Right(Me.TextBox1.Text, 3), 1) = "." Then KeyAscii = 0

Bonne journée

Denys



Bonjour CBR,

With TextBox1
On Error Resume Next
.Value = CDbl(.Value)
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ",", "."))
If Err.Number <> 0 Then _
.Value = CDbl(Application.Substitute(.Value, ".", ","))
If IsNumeric(.Value) Then
.Value = Format(.Value, "# ##0.000")
Else
.Value = ""
MsgBox "Format non-valide !", vbCritical, "ERREUR..."
.SetFocus
Exit Sub
End If
End With


ChrisV


"CBR" a écrit dans le message de news:
43945163$0$20839$
Bonjour tlm

Une petite question concernant la mise en forme d'une textbox.

Dans un userform j'ais des textbox destiné à acceuillir des chiffres
avec
décimales. Comment limité ces dècimales au nombres de trois maxi ?


Merci de votre aide

a+
CBR















Avatar
CBR
heuuu! là c'est moi qui ai oublié de prèciser que ces données n'étaient pas
entrées manuellement
textbox1.text est renseigné par macro et çà ne peut etre qu'un chiffre donc
pas d'erreur de saisie possible.
de ce fait " Private Sub TextBox1_KeyPress" n'est pas le bon endroit non
plus.
les textbox sont renseignées dans "Private Sub ComboBox1_Change()"
CBR

"Denys" a écrit dans le message de news:

Bonjour CBR,

OOOoooppppsss... s'cuse-moi

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next
If KeyAscii < 46 Or KeyAscii > 57 Then
KeyAscii = 0
End If
If Left(Right(Me.TextBox9.Text, 3), 1) = "." Then KeyAscii = 0
End Sub

La condition KeyAscii est pour empêcher d'écrire autre chose qu'un
chiffre...

Voilà

Denys


J'ais essayé les 2 soluces, aucune ne marche ????
Vous les mettez où ces lignes ? Dans Sub textbox1_change ? ou ailleur ?

CBR






Avatar
Pierre Archambault
Salut CBR

textbox1 = Format(Valeur, "####0.000") 'Utilise le format approprié
(point ou virgule décimale etc.)
Valeur étant le nombre qui doit être affiché

Bonne chance

Pierre


"CBR" a écrit dans le message de
news:43945163$0$20839$
Bonjour tlm

Une petite question concernant la mise en forme d'une textbox.

Dans un userform j'ais des textbox destiné à acceuillir des chiffres avec
décimales. Comment limité ces dècimales au nombres de trois maxi ?


Merci de votre aide

a+
CBR




Avatar
CBR
Oui Pierre, je viens de trouver comment faire
J'utilise effectivement cette formule, mais pas directement sur la textbox1,
mais sur le chiffre que la macro y entre.

let résultat = format(valeur,"# ##0.000")
textbox1.text = résultat

Merci de vous avoir creusé les méninges

a+

CBR

"Pierre Archambault" a écrit dans le
message de news: hD%kf.26505$
Salut CBR

textbox1 = Format(Valeur, "####0.000") 'Utilise le format approprié
(point ou virgule décimale etc.)
Valeur étant le nombre qui doit être affiché

Bonne chance

Pierre