Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionIf KeyAscii 8 Or KeyAscii 46 Then Exit Sub
TextBox1.Text = Format(TextBox1.Text, "0## ## ## ##")
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii 8 Or KeyAscii 46 Then Exit Sub If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 End Sub Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Not Replace(TextBox1.Text, " ", "") Like "#########" Then MsgBox "saisie erronée - saisissez 9 chiffres" Cancel = True End If TextBox1.Text = Format(TextBox1.Text, "0## ## ## ##") End Sub
Pour l'OCX, j'aimerais bien le connaitre et l'utiliser (As-tu lien de cours ?)
A quoi sert d'avoir un masque de saisie si on ne l'obtient qu'après que TextBox perd le focus ?
J'ai même traité avec les tirets
Private Sub TextBox1_Change() Dim Txt As String Txt = TextBox1.Text v = Len(Txt) If v 3 Or v 6 Or v = 9 Then Txt = Txt & " " TextBox1.Text = Txt End Sub
En fin des tirets sans avoir à monter une usine à gaz
If v 3 Or v 6 Or v = 9 Then Txt = Txt & " "
J'ai par exemple limité l'effacement aux seuls backspaces entamés depuis la fin.
Dim NuméroTel As String Dim Change As Boolean Private Sub Form_Load() Text1.MaxLength = 12 Change = False End Sub Private Sub Text1_Change() If Change = True Then Change = False Else NuméroTel = NuméroTel & Right(Text1.Text, 1) Form1.Caption = "Ton numéro est le : " & NuméroTel If IsNumeric(Right(Text1.Text, 1)) = True And Len(Text1.Text) > 4 Then Change = True Text1.SelStart = Len(Text1.Text) - 1 Text1.SelLength = 1 Text1.SelText = "_" End If End If End Sub Private Sub Text1_Click() SendKeysFin End Sub Private Sub Text1_DblClick() SendKeysFin End Sub Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 8 Then Text1.Text = "": NuméroTel = "" Form1.Caption = "" Exit Sub End If Dim i As Integer For i = 1 To Len(Text1.Text) If Mid(Text1.Text, i, 1) <> "_" And Mid(Text1.Text, i, 1) <> " " And IsNumeric(Mid(Text1.Text, i, 1)) = False Then Text1.Text = Replace(Text1.Text, Mid(Text1.Text, i, 1), "") End If Next i If Len(Text1.Text) 3 Or Len(Text1.Text) 6 Or Len(Text1.Text) = 9 Then Text1.Text = Text1.Text & " " SendKeysFin End Sub Private Sub SendKeysFin() Text1.SelStart = Len(Text1.Text) Text1.SelLength = 0 End Sub
If Len(Text1.Text) 3 Or Len(Text1.Text) 6 Or Len(Text1.Text) = 9 Then Text1.Text = Text1.Text & " "
If v 3 Or v 6 Or v = 9 Then Txt = Txt & " "
j'espère déposer mon fantôme (un vrai) ce soir : il est terminé. Juste une question, maintenant, de rédaction de sa présentation.