Conversion string

Conversion string - VB/VBA/VBS - Programmation

Marsh Posté le 07-01-2008 à 14:01:09    

Hello,
 
toute petite question :
J'ai un champ texte qui va recevoir un décimal.  
Seule la virgule est acceptée pour la conversion, mais j'aimerais pouvoir accepter aussi bien les points que les virgules comme séparateur.  
 
j'ai déjà une solution (remplacer tous les points par des virgules dans la string), mais je me demandzais si y'avait pas une solution plus habile...
 
Merci :)

Reply

Marsh Posté le 07-01-2008 à 14:01:09   

Reply

Marsh Posté le 08-01-2008 à 00:36:57    

c'est pas à toi de décider ça, mais à l'utilisateur (via les paramètres régionaux) :o

Reply

Marsh Posté le 08-01-2008 à 09:15:35    

Harkonnen a écrit :

c'est pas à toi de décider ça, mais à l'utilisateur (via les paramètres régionaux) :o


Ouais mais l'utilisateur est con, et il tape des fois des points, des fois des virgules et c'est ça que je veux gérer [:spamafote] D'ailleurs si tu réfléchis un peu, tu t'appercevras que sur le pavé numérique, c'est un point et pas une virgule... Alors que le système FR utilise une virgule...  
Pour l'instant, je remplace simplement les . par des , mais je sais pas s'il y a pas une autre solution plus habile...

Reply

Marsh Posté le 08-01-2008 à 10:27:37    

Jour Bon, je ne sais pas si c'est ce que tu recherches
 
4 TextBoxes sur une UserForm :
Pour Saisie Décimale avec impossibilté de saisir autre chose que des chiffres et un séparateur
décimal ,avec substitution de la Virgule par un Point si erreur de frappe
Pour Saisie entiere,Alpha et par exemple 7 chiffres + 1 Lettre


Option Explicit
 
Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
Const entrees_alpha_permises = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" & vbCr & vbBack
 
Const Point = "."
Const Virgule = ","
 
Private Sub BtnOk_Click()
    Unload Me
End Sub
 
Private Sub BtnAnnuler_Click()
    Unload Me
End Sub
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(Point) Then
        If InStr(TextBox1, Virgule) = 0 Then
            KeyAscii = Asc(Virgule)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
        KeyAscii = 0
    End If
 
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
 
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr(entrees_entieres_permises, Chr(KeyAscii)) = 0 Then KeyAscii = 0
 
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
 
Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr(entrees_alpha_permises, Chr(KeyAscii)) = 0 Then KeyAscii = 0
 
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
 
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case TextBox4.SelStart
        Case 0 To 6
            If InStr(entrees_entieres_permises, Chr(KeyAscii)) = 0 Then KeyAscii = 0
        Case 7
            If InStr(entrees_alpha_permises, Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Select
 
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub


 
Dans un Module, le code pour un Bouton placé sur Feuil1


Sub BtnSaisie_QuandClic()
    UserForm1.Show
End Sub

Reply

Marsh Posté le 20-08-2008 à 11:18:32    

Ou sinon, il suffit de faire :  
Val(Str( TonNombreOuIlFautRemplacerLaVirguleParUnPoint ))

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed