Forcer format de saisie textbox [Résolu]

Signaler
-
Messages postés
14938
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 octobre 2020
-
Bonjour,

Je cherche à forcer le format de saisie d'une textbox sous la forme CC-LLL-CC ou CCC-LLL-CC (C=chiffre, L= Lettre).
Impossible de trouver ma réponse sur le net..

Merci de vos retours

Configuration: Windows / Chrome 81.0.4044.138

7 réponses

Messages postés
14938
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 octobre 2020
602
Bonjour

et un makseditbox ou maskedtextbox selon le vb que tu utilises (oui y'a pleins de vb différent)?
Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
564
Bonjour,

pour format: CCC-LLL-CC à adapter pour d'autre format


Option Explicit
Private Sub TextBox1_Change()
On Error Resume Next
    Dim Valeur As Byte
    TextBox1.MaxLength = 8 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBox1)
    If Valeur < 3 Or Valeur > 6 Then
    If Not IsNumeric(Right(TextBox1, 1)) Then
        MsgBox "Le caractere saisi n'est pas valide" 'non numérique
        TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
    End If
    ElseIf IsNumeric(TextBox1.Value) Then
    MsgBox "Le caractere saisi n'est pas valide" 'numérique
    End If
End Sub


Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 498
Bonjour,

En complément des réponses des collègues (que je salue au passage), voici une proposition :

Private Sub TextBox5_Change()
Dim Formatage As String, LenT As Integer
Const CH As String = "111-AAA-11"
Const COMP As String = "###[-][a-zA-Z][a-zA-Z][a-zA-Z][-]##"

    LenT = Len(TextBox5.Value)
    If LenT <= Len(CH) Then
        If LenT > 0 Then
            Formatage = TextBox5.Value & Right(CH, Len(CH) - LenT)
            If Not Formatage Like COMP Then TextBox5.Value = Left(TextBox5.Value, LenT - 1)
        End If
    Else
        TextBox5.Value = Left(TextBox5.Value, LenT - 1)
    End If
End Sub
Messages postés
14938
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 octobre 2020
602
Salut Pijaku.

Si dans ça version de VB y'a un textbox maské ça reste plus simple ;)
Bonjour,

Merci de vos retours. Effectivement, je ne l'ai pas précisé. Je suis sur du VB excel.
Messages postés
14938
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 octobre 2020
602
Ha j'ai fait une recherche pour VBA (VB pour Application) et il semble qu'il n'y ait pas de masked textbox dans ce langage.

Donc, il faut te tourner vers les 2 autres solutions
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 498
Salut Whis,

Non, en effet, cela n'existe pas.
Du coup, pour VBA Excel, ma solution fonctionne plutôt pas mal.
Il faut toutefois l'adapter pour les 2 cas : CC-LLL-CC ou CCC-LLL-CC.
Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
564 >
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020

Bonjour à tous,

ucfoutu c'était essayé à cet excercice, il y a quelque temps

https://codes-sources.commentcamarche.net/source/53984-vba-uniquement-saisies-controlees-un-peu-comme-avec-maskededit

Cela nécessite des lignes de code!!!!!!!!!!!!!!!!

@+ Le Pivert
Messages postés
5
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
26 mai 2020

Merci encore de vos retour.s
Pour information, j'ai utilisé le code de "pijaku"
Messages postés
14938
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 octobre 2020
602
Pense à marquer le sujet résolu