TextBox avec valeur dollars [Résolu]

avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 18:59 - Dernière réponse :  cs_MPi
- 14 janv. 2007 à 04:51
Bonjour,

J'ai un userForm avec plusieurs TextBox qui contiennent des valeurs en dollars.

Je voudrais que l'orsque je rentre une valeur dans se textbox, il l'inscrive en $ ex: $1.00.

De plus il ne faux pas qu'il inscrit ex: 1.99876. mais bien en $.

Comment faire?
Afficher la suite 

28 réponses

Répondre au sujet
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 19:41
+3
Utile
Bon, j'ai un poil galéré mais ceci devrait faire l'affaire (tiens moi au courant) :

Private Sub TextBox1_Change()
    Dim MaVal As String
    
MaVal = TextBox1.Text
If Not Left(MaVal, 1) = "$" Then
    TextBox1.Text = "$" & MaVal
Else
    If Not Right(MaVal, 1) = "." Then
        TextBox1.Text = "$" & Round(CDbl(Mid(MaVal, 2, Len(MaVal))), 2)
    End If
End If
End Sub


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 20:14
+3
Utile
Alors voici la correction,

je t'ai inversé le tout, et fait en sorte que le curseur se place toujours avant le sigle Dollar :

Private Sub TextBox1_Change()
    Dim MaVal As String
    
On Local Error Resume Next

MaVal = TextBox1.Text
If Not Right(MaVal, 1) = "$" Then
    TextBox1.Text = MaVal & "$"
Else
    If Not Right(Mid(MaVal, 1, Len(MaVal)
- 1), 1) = "." Then
        TextBox1.Text = Round(CDbl(Mid(MaVal,
1, Len(MaVal) - 1)), 2) & "$"
    End If
End If
TextBox1.SelStart = Len(TextBox1.Text) - 1
End Sub


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 19:10
0
Utile
Salut,

pour ton premier problème, voici comment procéder :

Private Sub TextBox1_Change()
    Dim MaVal As String
    
MaVal = TextBox1.Text
If Not Left(MaVal, 1) = "$" Then TextBox1.Text = "$" & MaVal
End Sub


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Par contre, au lieu de $1.99876, tu veux que ça effiche quoi ?
Arrondi supérieur ou inférieur ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 19:15
0
Utile
Salut,

Pas plus que 2 chiffres après la virgule.
Commenter la réponse de avyrex1926
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 19:23
0
Utile
Pour que le montant en dollars soit 2 chiffres max après le point comme dans l'exemple si:

$1.99 et non $1.9876...........
Commenter la réponse de avyrex1926
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 13 janv. 2007 à 19:33
0
Utile
Private Sub Command1_Click()
  MsgBox Format(1.9876, "$ 0.00")
End Sub
Commenter la réponse de jmfmarques
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 19:45
0
Utile
merci beaucoup encore une fois 
Commenter la réponse de avyrex1926
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 19:46
0
Utile
Jmfmarques,

j'ai pensé à ta solution, le problème, c'est qu'il faut gérer déjà ce qui est rentré dans le TextBox (et donc le dollar est déja présent lors de la saisie).
Mais je ne sais pas si avec Format, ça gère si le $ est déjà présent.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 19:53
0
Utile
Avyrex, par curiosité, c'est toi que j'aide sur développez.net ??
(sur le format paysage de l'impression du UserForm), si c'est non, concours de circonstances, à part le 1926, c'est le même pseudo.

En tout cas, je trouve ça sympathique 

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 19:55
0
Utile
Oui c'est moi  lolllllllllllllllll     
Commenter la réponse de avyrex1926
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 19:59
0
Utile
En passant, sur la formule que tu m'as donné qui fontionne super, on vien de me dire que le signe de dollars doit être à la fin du montant et non au début.

Je cherche à le modifier mais le signe de dollards se copie 25 fois après le chiffre.

Voici ce que j'ai fais:

Private Sub TextBox16_Change()
 Dim MaVal As String
   
MaVal = TextBox16.Text
If Not Left(MaVal, 1) = "$" Then
    TextBox16.Text = "$" & MaVal
Else
    If Not Right(MaVal, 1) = "." Then
        TextBox16.Text = Round(CDbl(Mid(MaVal, 2, Len(MaVal))), 2) & "$"
    End If
End If
End Sub
Commenter la réponse de avyrex1926
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 20:17
0
Utile
merci encore pour ton aide qui m'est fort utile 
Commenter la réponse de avyrex1926
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 13 janv. 2007 à 20:27
0
Utile
Bon ...
Bonsoir à tous...

On va me dire que je suis le roi des 'em.....rs", mais je m'en fiche
Le $ est dans la textbox ? et en plus à la fin ?
et alors ?

Private Sub Command5_Click()
 toto = "1.9876 $"
  MsgBox Format(Val(toto), "0.00 $")
End Sub
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 13 janv. 2007 à 20:33
0
Utile
Et si maintenant on mettait dans la textbox ce fichu $ devant, hein ? Ben.. ce serait :

Private Sub Command1_Click()
  toto = "$ 1.9876"
  MsgBox Format(Val(Mid(toto, 3)), "$ 0.00")
End Sub

Picétou ...
Commenter la réponse de jmfmarques
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 20:39
0
Utile
Et si tu veux que le format apparaisse pendant la saisie dans le TextBox ?...
Exemple,

je veux saisir dans le textbox 3.2, après avoir saisie le 3, je me retrouve bloqué !
Ca m'oblige à déplacer le curseur à l'endroit du changement.

Par contre, ta solution aurait été plus simple si la valeur était récupérée d'une variable, comme tu l'as fait dans ton exemple.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 13 janv. 2007 à 21:00
0
Utile
Euh...
Coriace le vieux fou...

Alors :

Private Sub Text1_GotFocus()  If Right(Text1.Text, 2) " $" Then Text1.Text Left(Text1.Text, Len(Text1.Text) - 2)
  Text1.SelStart = Len(Text1.Text)
End Sub




Private Sub Text1_KeyPress(KeyAscii As Integer) If IsNumeric(Chr(KeyAscii)) Or KeyAscii 8 Or (Chr(KeyAscii) "." And InStr(Text1.Text, ".") = 0) Then Exit Sub
 KeyAscii = 0
End Sub


Private Sub Text1_LostFocus()
  If Text1.Text = "" Then Exit Sub
  Text1.Text = Text1.Text & " $"
End Sub
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 13 janv. 2007 à 21:02
0
Utile
Mais je peux faire encore plus zouli zouli avec le $ qui "avance" au fur et à mesure .... et disparait s'il doit disparaitre ...quand il doit disparaître
J'essaye ?
Commenter la réponse de jmfmarques
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 21:04
0
Utile
Eh eh, gotfocus et lostfocus n'existe pas en VBA..

Bref, autant utiliser mon code

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 13 janv. 2007 à 21:09
0
Utile
Alors yenapadipwoblem...
j'oublie le lostfocus et le setfocus et je gère en trimbalant, comme je l'ai dit plus haut, le $ quand il le faut et le fait disparaître également quanf il le faut...
On parie ?
Commenter la réponse de jmfmarques
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 21:12
0
Utile
Inutile, le problème est résolu.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

TextBox avec valeur dollars - page 2