textbox format IsNumeric

news

XLDnaute Impliqué
Bonjour à tous du forum,

j'utilise le format numérique suivant pour une Textbox:

Private Sub TextBox05_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
If IsNumeric(TextBox05) Then
TextBox05 = Format(TextBox05, "# ##0,00")
Else
If TextBox05 = "" Then
Exit Sub
End
Else
MsgBox "not valid format of amount, change it"
End If
End If
End Sub
'************** de remplacer " , " ( virgule )
Private Sub TextBox05_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next
' If KeyAscii = 44 Then KeyAscii = 46 ( dépend des parametres régionales )
If KeyAscii = 46 Then KeyAscii = 44
End Sub


Normalement lorsqu'on met 2412.10 dans la textbox et on avance sur la prochaine Textbox, le montant est mis au format suivant : 2 412,10

Mais j'ai eu un bug avec le clavier. Lorsque j'ai mis 2412.10 dans la Textbox et puis avancé pour la prochaine Textbox, cela n'a pas été changé en 2 412,10. mais a été changé en 2 412

Pouquoi les virgules et les décimales ne sont plus affichées ?, ( ce n'était pas reconnu comme du texte, sinon aurait affiché Msgbox("erreur format") ).
Est-ce que cela depend de la langue du clavier ? J'utilise Français (Suisse)
ou cela dépend des paramètres régionales ?

Lorsqu'on clique su le bouton OK, le montant dans Textbox05 est mis dans la feuille (Feuil2")
mais cela ne fonctionne pas lorsque le montant dans Textbox05 c'est changé en "2 412"
Aucun montant est mis dans la Feuil2 !!


Dim VarDerL As Integer
If L = 0 Then Exit Sub
With Worksheets("Feuil2")
.Cells(L, 4) = Round(CSng(Trim(TextBox05.Value)), 2)
.Cells(L, 4).NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "
End With
End if


Je ne sais pas comment résoudre.

news
 
Dernière édition:

news

XLDnaute Impliqué
Re : textbox format IsNumeric

Re: Textbox05 = Format(TextBox05, "# ##0.00")
Cela ne résoud pas.
Ce format j'utilise. Comme j'ai eu un bug j'ai essayé de mettre avec le format "# ##0,00".
mais le bug reste, alors j'ai remis le format :
Textbox05 = Format(TextBox05, "# ##0.00")

Apparemment le caractère de la virgule n'est pas pris en compte comme il n'y a plus de virgule affiché dans Textbox05.
Mais sur les 2 autres ordinateurs que j'ulise cela fonctionne bien, uniquement avec le notebook cela ne fonctionne pas.
Pouquoi les virgules et les décimales ne sont plus affichées ?

ou est-ce que Windows est configuré en separateur decimal ?

L'autre bug c'est lorsqu'on clique su le bouton OK, le montant dans Textbox05 est mis dans la feuille (Feuil2"). Mais cela ne fonctionne pas lorsque le montant dans Textbox05 c'est changé en "2 412"
alors aucun montant est mis dans la Feuil2 !!

ou bien d'utiliser un format comme Round, mais uniquement avec Decimale
qui met directement le montant en décimale

TextBox05 = Application.Round(Valeur, 0)

news
 
Dernière édition:

news

XLDnaute Impliqué
Re : textbox format IsNumeric

Bonjour à tous du forum,

résolu,
c'était du aux paramètres régionales ?
les modifictions :
Textbox05 = Format(TextBox05, "0.00")

Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Then KeyAscii = 46
End Sub

Je voudrais demander, afin d'éviter les paramètres régionales, comment utiliser un code vba mais uniquement pour valeurs décimales, comme :
TextBox05 = Application.Round(Valeur, 0)

news
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : textbox format IsNumeric

Bonjour news, le forum,

Perso je n'utilise jamais KeyPress dans ce type de problème.

Quels que soient les paramètres régionaux et quel que soit le séparateur décimal utilisé dans la TextBox :

Code:
Private Sub TextBox05_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(Replace(TextBox05, ",", ".")) Or IsNumeric(Replace(TextBox05, ".", ",")) Then
  TextBox05 = Format(Val(Replace(TextBox05, ",", ".")), "# ##0.00")
  '---suite du code---
ElseIf TextBox05 <> "" Then MsgBox "not valid format of amount, change it"
End If
End Sub

Edit : si l'on veut entrer la valeur (numérique) de TextBox05 en cellule A1 :

Code:
Range("A1") = CDbl(TextBox05)

et mettre A1 au format Nombre désiré.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : textbox format IsNumeric

Re,

Mais plutôt qu'un message d'erreur à la sortie, il est préférable de forcer le texte à être numérique pendant la frappe :

Code:
Private Sub TextBox05_Change()
If Not (IsNumeric(Replace(TextBox05, ",", ".")) Or _
  IsNumeric(Replace(TextBox05, ".", ","))) Then TextBox05 = ""
End Sub

Private Sub TextBox05_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox05 = "" Then Cancel = True: Exit Sub
TextBox05 = Format(Val(Replace(TextBox05, ",", ".")), "# ##0.00")
'---suite du code---
End Sub

A+
 
Dernière édition:

mathiouze22

XLDnaute Junior
Re : textbox format IsNumeric

Bonjour à tous,

je rencontre le même problème
J'ai essayé d'appliquer les réponses au dessus, mais cela ne fonctionne toujours pas, j'étaye un peu mon cas :

1. l'utilisateur ouvre le usf
2. il renseigne les données dans les textbox -> ces textbox sont formatées comme suit

Code:
Private Sub TextBox9_AfterUpdate()
TextBox9 = Format(TextBox9, "#,##0 €")
End Sub

3. la macro "exporte" les valeurs des textbox comme suit :
Code:
Cells(derl, 4).Value = TextBox9.Value

mais le problème, c'est que une fois sur la feuille, les valeurs sont stockées sous forme de texte j'ai l'impression puisqu'ils récupèrent les espaces dans le chiffre et le € (visible dans la barre de formule)

j'ai essayé avec cdbl(), tester différentes synthaxes pour le format mais cela ne fonctionne pas...

Merci de votre aide
 

mathiouze22

XLDnaute Junior
Re : textbox format IsNumeric

Bonjour Pierrot

Merci bcp pr ton aide, cela fonctionne.
par contre je pensais que cela fonctionnerait pour les autres textbox qui sont paramétrées avec d'autres formats, pour le coup en %, et cela ne fonctionne pas avec ce type de données.
autre soucis lié au format %, j'aimerais que quand on tape 6 on obtienne 6% et non 600% comme l'interprète le format de la textbox

est ce possible?

edit : pas la peine, en fait je viens de trouver => même si c'est de la bidouille je fais comme ça
HTML:
TextBox19.Value = Format(TextBox19 / 100, "0.00%")
 
Dernière édition:

mathiouze22

XLDnaute Junior
Re : textbox format IsNumeric

en fait j'aurais une demande complémentaire :
la macro plante quand elle essaye de renvoyer la valeur d'une textbox non renseignée => comme je ne sais pas combien l'utilisateur va remplir de textbox, je suis obligé de vérifier toutes les valeurs

ci-dessous le code qui mérite certainement d'être amélioré vu que je suis pas du tout un spécialiste en macro mais qui permet d'illustrer le propos :

Code:
Sheets("analyse par mailing").Select
derl = Range("c65000").End(xlUp).End(xlUp).Offset(1, 0).row
Cells(coutL, 2).Value = CCur(TextBox2)
Cells(ope, 2).Value = TextBox1.Value
Cells(derl, 3).Value = TextBox3.Value
Cells(derl + 1, 2).Value = TextBox4.Value
Cells(derl + 2, 2).Value = TextBox5.Value
Cells(derl + 3, 2).Value = TextBox6.Value
Cells(derl + 4, 2).Value = TextBox7.Value
Cells(derl, 3).Value = CCur(TextBox8)
Cells(derl + 1, 3).Value = TextBox10.Value
Cells(derl + 2, 3).Value = TextBox12.Value
Cells(derl + 3, 3).Value = TextBox14.Value
Cells(derl + 4, 3).Value = TextBox16.Value
Cells(derl, 4).Value = CCur(TextBox9)
Cells(derl + 1, 4).Value = TextBox11.Value
Cells(derl + 2, 4).Value = TextBox13.Value
Cells(derl + 3, 4).Value = TextBox15.Value
Cells(derl + 4, 4).Value = TextBox17.Value
Cells(derl, 7).Value = TextBox18
Cells(derl + 1, 7).Value = TextBox20
Cells(derl + 2, 7).Value = TextBox22
Cells(derl + 3, 7).Value = TextBox24
Cells(derl + 4, 7).Value = TextBox26
Cells(derl, 8).Value = TextBox19
Cells(derl + 1, 8).Value = TextBox21
Cells(derl + 2, 8).Value = TextBox23
Cells(derl + 3, 8).Value = TextBox25
Cells(derl + 4, 8).Value = TextBox27
Cells(derl, 10).Value = CCur(TextBox28)
Cells(derl + 1, 10).Value = CCur(TextBox30)
Cells(derl + 2, 10).Value = CCur(TextBox32)
Cells(derl + 3, 10).Value = CCur(TextBox34)
Cells(derl + 4, 10).Value = CCur(TextBox36)
Cells(derl, 11).Value = CCur(TextBox29)
Cells(derl + 1, 11).Value = CCur(TextBox31)
Cells(derl + 2, 11).Value = CCur(TextBox33)
Cells(derl + 3, 11).Value = CCur(TextBox35)
Cells(derl + 4, 11).Value = CCur(TextBox37)
 

Discussions similaires

  • Question
Microsoft 365 TEXTBOX
Réponses
7
Affichages
378

Statistiques des forums

Discussions
312 500
Messages
2 089 013
Membres
104 004
dernier inscrit
mista