XL 2016 Champ de userform en euros

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
602
Réponses
33
Affichages
996
Réponses
5
Affichages
176
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
418
Retour