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.
'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