XL 2010 Format Textbox dynamique

cathodique

XLDnaute Barbatruc
Bonjour,

Au fil de mes recherches, j'ai trouvé des codes très intéressants de notre ami @patricktoulon (;) que je salue pour sa gentillesse en mp).
Ses codes sont à garder précieusement. Mais je n'ai pas toutes les connaissances pour les adapter à mes attentes.
Je voudrais un masque de saisie suivant: Textbox numérique (2 décimales) avec séparateur de milliers en dynamique et possibilité de retour arrière pour correction faute de frappe.
J'espère que mes explications sont claires.
Bon dimanche.
 

Pièces jointes

  • NUM avec Sep Millier dynamique.xlsm
    18.7 KB · Affichages: 2
Solution
voila
et noyeux joel
VB:
Option Explicit

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'patricktoulon
'textbox (million millier mille) formaté dynamico aux taper des touches
'la touche (BACK ;retour en arrière) est fonctionnelle  
  Dim v  'j'ai juste ajouté ce dim car le code planté
    With TextBox1
        v = Replace(.Value, " ", "")
        Select Case KeyCode
        Case 96 To 105, 48 To 57
            If KeyCode < 96 Then KeyCode = KeyCode + 48
            If InStr(1, v, ",") > 0 Then
                If Len(Split(v, ",")(1)) = 2 Then KeyCode = 0: Exit Sub
            Else
                'v = v & Chr(KeyCode - 48): KeyCode = 0
                v = Split(Format(v & Chr(KeyCode - 48)...

scraper

XLDnaute Nouveau
Bonjour Cath.
avec une commande replace supplémentaire et mon clavier numérique tout fonctionne
VB:
Private Sub TextBox1_Change()
Dim sep$, pos%
With TextBox1
    If .Text = "" Then Exit Sub
    sep = Application.DecimalSeparator
    .Text= Replace(.Text, ".", sep) 
    If Not IsNumeric(Left(.Text, 1)) Then .Text = "" Else If Not IsNumeric(Right(.Text, 1)) And Right(.Text, 1) <> sep Then .Text = Left(.Text, Len(.Text) - 1)
    pos = InStr(.Text, sep)
    If pos = 0 Then .Text = Format(.Text, "#,##0") Else If Len(Mid(.Text, pos + 1)) > 1 Then .Text = Format(Left(.Text, pos + 2), "#,##0.00")
End With
End Sub
 

Eric C

XLDnaute Barbatruc
Re le forum
Re le fil

Concernant le code de scraper, il suffit de rajouter :
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 If (InStr(TextBox1.Value, ",") <> 0 And Chr(KeyAscii) = ",") Then KeyAscii = 0
End Sub

Bonne fin d'après-midi à toutes & à tous
Eric c
 

Statistiques des forums

Discussions
314 719
Messages
2 112 181
Membres
111 452
dernier inscrit
christine64