TextBox avec format défini

Bonjour à tous,

Je suis face à une difficulté vis à vis de mon niveau VBA. .. Je n'arrive pas à faire ce que je souhaite et j'espère que vous trouverez une solution

J'ai une TextBox que j'ai limité à 8 caractères

Je souhaiterais avec le format suivant

  • Le premier caractère doit être obligatoirement une lettre en majuscule de A à Z
  • Les caractères 2 à 8 doivent être uniquement des chiffres de 0 à 9

Exemple => A1234567 ou Z7654321

Je essayé plusieurs solutions, mais je n'ai pas réussi à faire ce que je souhaitais

Pourriez-vous m'aider ?

D’avance merci

bonjour

essaie avec l'opérateur Like

if textbox1.value Like "[A-Z]########" then

Merci pour cette réponse rapide,

Je vais regarder mais j'ai du mal a voir ou je puis placer cette petite fonction like

Khyron79 a écrit :

Merci pour cette réponse rapide,

Je vais regarder mais j'ai du mal a voir ou je puis placer cette petite fonction like

re-bonjour,

dans ton module de validation du contenu de ta textbox

par exemple

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not TextBox1 Like "[A-Z]########" Then
        MsgBox "contenu de textbox1 n'a pas le bon format"
    End If
End Sub

Bonjour

il faut un KeyPress exemple

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox3) = 0 Then KeyAscii = Asc(UCase(Chr(KeyAscii))): Exit Sub
If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub

A+

Maurice

Merci h2so4

Ta solution est bien mais elle ne convient pas trop puisque je me suis mal exprimé ... excuse moi...

Je vais reformuler.

Le champs à 8 caractères

Je souhaite que l'utilisateur ne puisse saisir uniquement un lettre de a à z pour le premier (avec mise en majuscule automatiquement)

et que l'utilisateur puisse saisir uniquement des chiffres pour les 7 autres

La solution que propose archer s'en approche grandement !!


archer

Etant novice en VBA

Pourrais tu détailler/expliquer ton code pour ma culture personnelle svp ?

J'ai aussi ajouter le code TextBox3.Value = UCase(TextBox3) entre tes deux if pour transformer le 1er caractère en majuscule et ajouter quelques commentaire pour me souvenir des fonctions quand je repasserais dans mon code

Mon textbox s'appel REF_DOSSIER

Et ca me donner le code suivant

Est-ce que les commentaires sont "corrects" ou pertinent ??

Private Sub REF_DOSSIER_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    'Autoriser uniquement des caractere alphabétique pour le premier caractere du champ
    If Len(REF_DOSSIER) = 0 Then KeyAscii = Asc(UCase(Chr(KeyAscii))): Exit Sub
    ''Mise en majuscule du premier caractère
    REF_DOSSIER.Value = UCase(REF_DOSSIER)
    'Autoriser uniquement des chiffres pour les 7 autres caractéres
    If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep

End Sub

Je suis en train de tester ton code archer,

il me semble convenir et fonctionner super bien !! merci encore !!

Bonjour

un peux plus fin

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox3) = 0 Then Call MAJ_SEUL(KeyAscii): Exit Sub
If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub

Private Sub TextBox3_Change()
TextBox3.Value = Left(TextBox3.Value, 8)
End Sub

Private Sub MAJ_SEUL(KeyAscii)
    Select Case KeyAscii
        Case 65 To 90 '<---MAJUSCULES
            KeyAscii = KeyAscii
        Case 97 To 122  '<---exclue les miniscules
            KeyAscii = KeyAscii - 32
        Case Else
            KeyAscii = 0
    End Select
End Sub

A+

Maurice

super merci !!

ca marche super bien !!

aller je me plonge dans ton code pour bien le comprendre et apprendre

merci encore !!!!

bonjour

j'ais encore fait une modife a toi de voir se que tu préfère

A+

Maurice

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox3) = 8 Then KeyAscii = 0: Exit Sub
   If Len(TextBox3) = 0 Then
       Select Case KeyAscii
           Case 65 To 90 '<---MAJUSCULES
               KeyAscii = KeyAscii
           Case 97 To 122  '<---exclue les miniscules
               KeyAscii = KeyAscii - 32
           Case Else
               KeyAscii = 0
       End Select
      Exit Sub
   End If
If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub
Rechercher des sujets similaires à "textbox format defini"