Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…