VBA Excel : Limiter la saisie sur plusieurs TextBox d'un UserForm
bibiledur
Messages postés1Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention 1 juin 2006
-
1 juin 2006 à 14:33
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
1 juin 2006 à 18:29
Bonjour,
Je suis un peu Novice.
J'ai un formulaire sur lequel il y a une centaine de TextBox que j'aimerais limiter à l'insertion de nombres.
Le problème, c'est que je ne me vois pas insérer dans mon programme 100 procédures du type :
"Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)If Chr(KeyAscii) "." Then KeyAscii Asc(",") ' detecte le point et la virgule et remplace
'le point par une virgule
If KeyAscii = 8 Then 'Regarde si appuyer sur BACKSPACE
KeyAscii = 8 ' Si oui ... On efface
Else
If InStr("0123456789.,", Chr(KeyAscii)) = 0 Then 'contrôle de saisie
KeyAscii = 0 'caractère incorect, donc il ne s'ecrit pas
End If
End If
End Sub"
Savez-vous comment limiter la saisie de tous mes TextBox avec un code cours et simple?
J'espère que mon vocabulaire est simple et compréhensible...
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 1 juin 2006 à 14:47
Bonjour
à la place de copier le code plusieurs fois, met le dans une fonction :
Private Sub KeyPress(ByRef KeyAscii As MSForms.ReturnInteger) If Chr(KeyAscii) "." Then KeyAscii Asc(",") ' detecte le point et la virgule et remplace
'le point par une virgule
If InStr("0123456789.,", Chr(KeyAscii)) = 0 and KeyAscii << 8 Then 'contrôle de saisie
KeyAscii = 0 'caractère incorect, donc il ne s'ecrit pas
End If
End Sub
Ensuite tu appel :
Private Sub textbox1_KeyPress(ByRef KeyAscii As MSForms.ReturnInteger)
KeyPress(KeyAscii)
End Sub
Bizzare que ce soit ByVal le paramètre, catr si tu le modifie, ce changement ne sera pas appliqué.
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
Alboure
Messages postés42Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention21 juin 2006 1 juin 2006 à 15:36
Bonjour, tu peux laisser rentrer les données dans le formulaire et tester sur un bouton valider:
Private Sub bt_valider_Click()
Dim badval As Boolean
badval = False
For Each ctl In Me.Controls
If Left(ctl.Name, 4) = "Text" Then
ctl.Text = Replace(ctl.Text, ".", ",")
If Not IsNumeric(ctl.Text) Then
ctl.Text = ""
badval = True
End If
End If
Next
If badval = True Then
MsgBox "Les champs doivent tous être des valeurs numériques"
Else
'Traitement des données si tout va bien
End If
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 1 juin 2006 à 18:29
Salut,
En VBA excel, je pense que le mieux serait de faire un Module et un Module de classe.
L'avantage, c'est que tu écris une fois la procédure, qui sera exécuté par autant de TextBox que tu auras au préalable définis.
Si cette technique t'interesse, dis le moi, je te ferai le code des Module et te les mettrai ici.
@++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement