VBA Excel : Limiter la saisie sur plusieurs TextBox d'un UserForm

bibiledur Messages postés 1 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 1 juin 2006 - 1 juin 2006 à 14:33
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 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...

Par avance un grand merci

3 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
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)
0
Alboure Messages postés 42 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 21 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

End Sub
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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
0
Rejoignez-nous