TextBox

eleve

XLDnaute Nouveau
Bonjour,

J'aurais besoin d'un grand coup de main

Explication :

Le code ci-dessous fonctionne à merveille et j'aurais voulu le modifié de façon à avoir plus de possibilités.

C'est à dire : avec ce même code quand je tape mon numéro de facture, je n'ai pas à taper "FC" ni l'année "11" et le curseur passe au textbox suivant.

Ce que je cherche à faire, c'est faire la même chose, mais avec deux choix dans le même textbox :

FC00000011 et FC1000000011

Lorsque je commence à taper 0 j'ai MaxLength = 10 etc etc
et
lorsque je commence à taper 1 j'ai MaxLength = 12 etc etc

je ne sais pas si c'est bien clair.

Code:
Private Sub TextBox2_keyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = Asc(UCase(Chr(KeyAscii)))
Dim Valeur As Byte
    TextBox2.MaxLength = 10
    Valeur = Len(TextBox2)
    If Valeur = 0 Then TextBox2 = TextBox2 & "FC"
    If Valeur = 8 Then TextBox2 = TextBox2 & "11"
    TextBox2.AutoTab = True
End Sub

En gros j'ai fait ceci (bien évidement ça ne marche pas)

Code:
         Private Sub TextBox2_keyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = Asc(UCase(Chr(KeyAscii)))
Dim Valeur As Byte
        If TextBox2.Value Like "0" Then FC0
        
        If TextBox2.Value Like "1" Then FC1
       
  End Sub

Code:
Sub FC0()
    TextBox2.MaxLength = 10
    Valeur = Len(TextBox2)
    If Valeur = 0 Then TextBox2 = TextBox2 & "FC"
    If Valeur = 8 Then TextBox2 = TextBox2 & "11" 
    TextBox2.AutoTab = True
End Sub

Sub FC1()
    TextBox2.MaxLength = 12
    Valeur = Len(TextBox2)
    If Valeur = 0 Then TextBox2 = TextBox2 & "FC"
    If Valeur = 10 Then TextBox2 = TextBox2 & "11" 
    TextBox2.AutoTab = True
End Sub

Voila pfiouuu j'ai du mal à me comprendre moi même, j’espère que ce ne sera pas votre cas.

d'avance merci.
 
G

Guest

Guest
Re : TextBox

Bonsoir,

Si j'ai bien compris:

(Attention renommer TextBox1 en TextBox2)

Code:
'Variable en haut du module du userform
Private firstKey As Boolean
 
'Evènement change
Private Sub TextBox1_Change()
    firstKey = Len(TextBox1.Text) = 0
End Sub
 
'Evènement KeyPress
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If firstKey Then
        If KeyAscii = 48 Then TextBox1.MaxLength = 10 Else TextBox1.MaxLength = 12
    End If

    KeyAscii = Asc(UCase(Chr(KeyAscii)))

    Dim Valeur As Byte
    Valeur = Len(TextBox1): Label1 = Valeur
    If Valeur = 0 Then TextBox1 = TextBox1 & "FC"
    If Valeur = TextBox1.MaxLength - 2 Then TextBox1 = TextBox1 & "11"
    TextBox1.AutoTab = True
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 326
Messages
2 087 311
Membres
103 513
dernier inscrit
adel.01.01.80.19