A voir également:
- Obliger saisie numérique dans textbox vba
- Télévision numérique - Guide
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Saisie gestuelle iphone - Guide
- Pavé numérique bloqué - Guide
- Clavier numérique bloqué - Guide
2 réponses
Bonjour,
Controlez l'entree plutot que le resultat:
Controlez l'entree plutot que le resultat:
Private Function KPressOK(KPress As Byte) As Boolean Select Case KPress Case 48 To 57 'chiffres de 0 a 9 KPressOK = True Case Else KPressOK = False MsgBox "Entree de chiffres uniquement" End Select End Function Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim KPress As Byte KPress = KeyAscii If Not KPressOK(KPress) Then KeyAscii = 0 End If End Sub Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim KPress As Byte KPress = KeyAscii If Not KPressOK(KPress) Then KeyAscii = 0 End If End Sub
Salut f894009,
Ou, plutôt que de se taper 90 Private Sub TextboxX_Keyppress, utiliser un module de classe.
Comme ceci :
Dans un module standard :
Dans un module de classe (nommé Classe1)
Dans l'événement Initialize (module de l'UserForm)
!!! A condition que les TextBox soient nommés : TextBox1, TextBox2, ..., TextBox90 :
Dans l'événement QueryClose (module de l'UserForm)
Ou, plutôt que de se taper 90 Private Sub TextboxX_Keyppress, utiliser un module de classe.
Comme ceci :
Dans un module standard :
Option Explicit Public mesTB() As New Classe1
Dans un module de classe (nommé Classe1)
Option Explicit Public WithEvents cTBx As MSForms.TextBox Private Sub cTBx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or cTBx.SelStart > 0 And Chr(KeyAscii) = "-" _ Or InStr(cTBx.Value, ",") <> 0 And Chr(KeyAscii) = "," Then KeyAscii = 0 End If End Sub Private Function ChainePasOK(strpass As String) As Boolean If strpass = "" Then Exit Function If Len(Replace(strpass, ".", "")) <> Len(strpass) Then ChainePasOK = True: Exit Function If Len(strpass) = 1 And InStr("1234567890", strpass) = 0 Then ChainePasOK = True: Exit Function strpass = Replace(strpass, ",", ".") If Len(CStr(Val(strpass))) <> Len(strpass) Then ChainePasOK = True End Function
Dans l'événement Initialize (module de l'UserForm)
!!! A condition que les TextBox soient nommés : TextBox1, TextBox2, ..., TextBox90 :
Option Explicit Private Sub UserForm_Initialize() Dim i As Integer, Ctrl As Control ReDim mesTB(90) For i = 1 To 90 Set Ctrl = Me.Controls("TextBox" & i) Set mesTB(i).cTBx = Ctrl Next i Set Ctrl = Nothing End Sub
Dans l'événement QueryClose (module de l'UserForm)
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Erase mesTB End Sub