TextBox avec valeur dollars

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 13 janv. 2007 à 18:59
 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?

28 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 19:41
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"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 20:14
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"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 19:10
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"
<!--
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 19:15
Salut,

Pas plus que 2 chiffres après la virgule.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 19:23
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...........
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 janv. 2007 à 19:33
Private Sub Command1_Click()
  MsgBox Format(1.9876, "$ 0.00")
End Sub
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 19:45
merci beaucoup encore une fois 
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 19:46
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"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 19:53
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"
<!--
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 19:55
Oui c'est moi  lolllllllllllllllll     
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 19:59
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
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 20:17
merci encore pour ton aide qui m'est fort utile 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 janv. 2007 à 20:27
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 janv. 2007 à 20:33
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 ...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 20:39
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"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 janv. 2007 à 21:00
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 janv. 2007 à 21:02
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 ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 21:04
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"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 janv. 2007 à 21:09
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 ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 21:12
Inutile, le problème est résolu.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Rejoignez-nous