XL 2016 Champ de userform en euros

ChantalTreize

XLDnaute Occasionnel
Bonsoir tout le monde,
J'ai un userform avec un champ txt dans lequel je dois entrer un nombre au format monétaire euros
Comment faire pour avoir ce format
Merci d'avance
Chantal
 

ChTi160

XLDnaute Barbatruc
Bonjour Chantal
Sans fichier ni code , pas évident Lol
VB:
TextBox1 =Cells(1,1)
Ex : Cells(1,1)=100,00
ou
VB:
TextBox1 =Format((Cells(1,1),"### #0.00")
ou
VB:
TextBox1 =Format((Cells(1,1),"### #0.00€")
faut il mettre le Symbole dans le TextBox.Text = à 100,00 €" (pas cool ) s'il on veut ensuite récupérer une valeur .
on peut aussi mettre un Label avec le Symbole a coté du TextBox et ne récupérer que la valeur dans le TextBox.
jean marie
 
Dernière édition:

ChantalTreize

XLDnaute Occasionnel
Bonjour Chantal
Sans fichier ni code , pas évident Lol
VB:
TextBox1 =Cells(1,1)
Ex : Cells(1,1)=100,00
ou
VB:
TextBox1 =Format((Cells(1,1),"### #0.00")
ou
VB:
TextBox1 =Format((Cells(1,1),"### #0.00€")
faut il mettre le Symbole dans le TextBox.Text = à 100,00 €" (pas cool ) s'il on veut ensuite récupérer une valeur .
on peut aussi mettre un Label avec le Symbole a coté du TextBox et ne récupérer que la valeur dans le TextBox.
jean marie

Un grand merci ça fonctionne très bien
Chantal
 

Daniel38

XLDnaute Occasionnel
Perso j'utilise :
Private Sub TextBox_Montant_Budget_Client_AfterUpdate()
TextBox_Montant_Budget_Client = Format(TextBox_Montant_Budget_Client, "# ### ##0.00 €")
End Sub

je mets également une fonction très simple pour uniquement saisir des chiffres ...

Private Sub TextBox_Montant_Budget_Client_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox_Montant_Budget_Client, KeyAscii)
End Sub

Fonction à mettre dans un module normal :
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
SepDec = Application.International(xlDecimalSeparator)
If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
 

patricktoulon

XLDnaute Barbatruc
bonjour Daniel38
il y a quand même plus simple

VB:
Private Sub TextBox1_AfterUpdate()
'   TextBox1.Value = Format(TextBox1.Value, "# ### ##0.00 €")
    TextBox1.Value = Replace(Format(TextBox1.Value, "# ### ##0.00 €"), ",", ".")
    Cells(1, 1) = Val(TextBox1)    'test d'injection dans cellule
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 46 Then KeyAscii = 44
    If Not Chr(KeyAscii) Like "[0-9-,]" Then KeyAscii = 0
End Sub

d'autant plus que la c'est la règle VBA qu'il faut observer et non le séparateur décimal régional pour l'injection

en effet le formatage textbox ne fonctionne pas avec le point

Mais l'injection dans cellule ne fonctionnera pas avec une virgule

il n'y a donc une seule règle a observer
le point interdit au taper et le replacement virgule/point pour une injection complète avec val
sans val et sans replacement c'est du texte que tu injecte dans la cellule

et même pour le calcul entre deux textbox c'est le point et non la virgule en VBA
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87