Vérifier que les derniers caractère d'un textbox sont bien des chiffres

Bonjour,

Je souhaiterai afficher un message si les 4 derniers caractères d'un textbox ne sont pas des chiffres.

Si j'utilise Isnumeric, le problème est qu'il considère le "-" placé avant les 4 derniers chiffres comme un caractère numérique donc il valide.

Merci pour votre retour

bav

Xavier

Bonsoir,

faites un double test : si c'est numérique et supérieur à 0.
Comme cela s'il y a -563, ce n'est pas bon et s'il y a -5234, il y a bien 4 chiffre et supérieur à 0.
Attention TextBox = Texte et non pas chiffre, donc s'adapter au niveau des tests.

@ bientôt

LouReeD

Hello,

xavierdep ton énoncé n'est pas très clair car tu veux faire un test sur 4 caractères. Si tu as un moins devant 4 caractères cela fait 5 caractères . Montres nous un cas qui est OK et un autre qui n'est pas OK.

Ami calmant, J.P

Bonsoir,

Voici ce que doit idéalement encoder l'utilisateur dans la textbox ABC-BEL-2587.

ABC sera toujours le même j'ai donc mis ceci:

Private Sub TEXTB_VIN_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Left(TEXTB_VIN.Text, 3) <> "ABC" Then

        MsgBox "Vous devez entrer une valeur au format ABC-BEL-xxxx"

        Cancel = True
        Exit Sub

    End If
End Sub

J'aimerai la même condition pour que les derniers caractères soient absolument 4 chiffres ,j'avais essayé avec isnumeric de right mais comme signalé il considère le "-" comme un numeric et donc il accepte "-258'

J'espère avoir été plus clair :)

Merci pour votre aide

Xavier

Bonjour à tous,

Avec les expressions régulières ...

Voici la fonction avec une expression régulière minimaliste.

Function CheckString(ByVal Value As String, Optional ByVal Pattern As String) As Boolean
    Dim localPattern As String
    localPattern = Pattern

    If localPattern = vbNullString Then localPattern = "^[a-zA-Z]{3}.*\d{4}$"
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    regex.Pattern = localPattern
    regex.IgnoreCase = True
    regex.Global = False

    Dim Result As Boolean
    Result = regex.test(Value)

    CheckString = Result
End Function

Et pour le test :

Sub testCheckString()
    Dim Ele As Variant
    For Each Ele In VBA.Array("Ab12", "ABCD12", "AbcD1234", "12AB1234")
        Dim strTemp As String
        strTemp = strTemp & Ele & "  " & "Résultat : " & CheckString(Ele) & vbNewLine
    Next Ele
MsgBox strTemp
End Sub

Bonne programation.

Bonsoir,

Jean-Paul, je ne maitrise pas les expression régulières... Mais ceci me parait plus propre que ma proposition...

Sinon en codage ma proposition :

valeur = Right(TextBox1, 4)
If IsNumeric(valeur) And valeur > 0 Then MsgBox "OK"

@ bientôt

LouReeD

Super lou ree j'ai adapté mais ca fonctionne

Merci

Rechercher des sujets similaires à "verifier que derniers caractere textbox bien chiffres"