XL 2010 Format Textbox dynamique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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)...
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
1 K
Réponses
7
Affichages
3 K
Retour