Format Textbox automatique en fonction de sa valeur

thespeedy20

XLDnaute Occasionnel
Bonjour le forum,

Je dois introduire le poids d'une personne dans un Texbox :

Je désirais avoir le format les formats suivant automatique:

Entre 0 et 9,9 kg----> ex : 5,20 kg
Entre 10 et 99 kg-----> ex : 52,00 kg
Entre 100 et 300 kg----->ex : 152,00 kg

en fait déplacer la virgule en fonction des chiffes encodés.

Merci beaucoup

OLi
 

fanfan38

XLDnaute Barbatruc
Bonjour,
Pour avoir une virgule (au lieu d'un point)
Bouton Office (le rond en haut à gauche)
  • Option Excel (en bas à droite)
  • Options avancées
  • Décocher "Utiliser les séparateurs système"
  • Mettre une virgule à la place du point (ou inversement) dans "Séparateur de décimale"
Pour le format souhaité personnalisé: ##0.00
A+ François
 

patricktoulon

XLDnaute Barbatruc
bonjour regarde cela

VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With TextBox1
        X = Replace(.Value, " Kg", "")
        Select Case KeyCode
        Case 96 To 105
            If X <> "" Then If Len(Replace(X, Val(Int(X)), "")) >= 3 Then KeyCode = 0: Exit Sub
            X = X & Chr(KeyCode + IIf(KeyCode < 96, 32, -48))
        Case 110, 188: If Not X Like "*,*" Then X = X & ","
        Case 8: X = Left(X, Len(X) - IIf(X <> "", 1, 0))
        Case Else: KeyCode = 0
        End Select
        .Value = X
        If .Value <> "" Then .Value = .Value & " Kg"
        .SelStart = Len(X)
    End With
    KeyCode = 0
End Sub
;)
 

patricktoulon

XLDnaute Barbatruc
re
et j’enlève la limite de longueur de l'entier et je rajoute la touche suppr
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With TextBox1
        X = Replace(.Value, " Kg", "")
        Select Case KeyCode
        Case 96 To 105
            'If X <> "" Then If Len(Replace(X, Val(Int(X)), "")) >= 3 Then KeyCode = 0: Exit Sub
            X = X & Chr(KeyCode + IIf(KeyCode < 96, 32, -48))
        Case 110, 188: If Not X Like "*,*" Then X = X & ","
        Case 8: X = Left(X, Len(X) - IIf(X <> "", 1, 0))
        Case 46: X = Left(X, .SelStart)
        Case Else: KeyCode = 0
        End Select
        .Value = X
        If .Value <> "" Then .Value = .Value & " Kg"
        .SelStart = Len(X)
    End With
    KeyCode = 0
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir désolé j'ai plus suivi parti chez client
Excellent, fonctionne admirablement bien ce code. Patrick, il y a t il moyen de limiter le nombre de décimales à deux, et le chiffre principal à 3 chiffres...
oui bien sur
Code:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With TextBox1
        x = Replace(.Value, " Kg", "")
        Select Case KeyCode
        Case 96 To 105
            If x <> "" Then If Len(Int(x)) > 2 And Not x Like "*,*" Then KeyCode = 0: Exit Sub 'max len 3 pour l'entier 
            If x <> "" Then If Len(Replace(x, Val(Int(x)), "")) >= 3 Then KeyCode = 0: Exit Sub' max  len 2 pour les decimal 
            x = x & Chr(KeyCode + IIf(KeyCode < 96, 32, -48))
        Case 110, 188: If Not x Like "*,*" Then x = x & ","
        Case 8: x = Left(x, Len(x) - IIf(x <> "", 1, 0))
        Case 46: x = Left(x, .SelStart)
        Case Else: KeyCode = 0
        End Select
        .Value = x
        If .Value <> "" Then .Value = .Value & " Kg"
        .SelStart = Len(x)
    End With
    KeyCode = 0
End Sub
;)
 

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 851
Membres
102 687
dernier inscrit
Biquet78