Forcer la saisie numérique a un ensemble de textbox
Fermé
Coucouhib
Messages postés
4
Date d'inscription
samedi 20 août 2016
Statut
Membre
Dernière intervention
30 août 2016
-
Modifié par pijaku le 31/08/2016 à 10:40
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 - 31 août 2016 à 11:00
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 - 31 août 2016 à 11:00
A voir également:
- Obliger saisie numérique dans textbox vba
- Pavé numérique bloqué - Guide
- Clavier numérique bloqué - Guide
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
2 réponses
f894009
Messages postés
17191
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
20 mai 2024
1 707
31 août 2016 à 07:56
31 août 2016 à 07:56
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
31 août 2016 à 10:57
31 août 2016 à 10:57
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
f894009
Messages postés
17191
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
20 mai 2024
1 707
Modifié par f894009 le 31/08/2016 à 11:01
Modifié par f894009 le 31/08/2016 à 11:01
Bonjour,
Ca roule ??
En effet, mais ne sachant pas si les noms de textboxs sont adkoite, j'ai seulement repondu a la demande car 90 textbox ca compte pour les doigts
Ca roule ??
En effet, mais ne sachant pas si les noms de textboxs sont adkoite, j'ai seulement repondu a la demande car 90 textbox ca compte pour les doigts