TextBox Numérique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 179 fois - Téléchargée 3 fois

Contenu du snippet

Dans le texbox:
Private Sub TxtRessourceVendu_KeyPress(KeyAscii As Integer)
If KeyNumerique(KeyAscii, TxtRessourceVendu) = False Then KeyAscii = 0
End Sub

Cette fonction vérifie qu'il n'y a pas plusieurs fois la virgule ou le point
100% fonctionnel.

' >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' USAGE: Chaine numérique selon divers critères
'        si chaine on compare aussi avec la chaine
' >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Function KeyNumerique(ByVal KeyAscii As Integer, _
         Optional ByVal Chaine As String) As Boolean
' Cette fonction est placé ainsi pour la vitesse d'éxécution
If IsNumeric(Chr(KeyAscii)) = True Then KeyNumerique = True: Exit Function

Dim Y       As Integer                      ' le caractère qui sera autorisé 1 seule fois !
Dim N       As Variant                      ' le tableau contenant le code ASCII des caractères permis .
    N = Array(8, 32, 44, 46, 110)           ' Les caractères autorisés (on peut en ajouter !)
If Chaine = vbNullString Then GoTo Suite    ' On ne vérifira pas la quantité de virgule ou de point
If InStr(Chaine, ",") > 0 Then Y = Y + 1    ' On verifie si la chaine contient déjà
If InStr(Chaine, ".") > 0 Then Y = Y + 1    ' la Virgule ou le Point.
    If KeyAscii = 44 Then Y = Y + 1         ' 44 c'est la virgule
    If KeyAscii = 46 Then Y = Y + 1         ' 46 c'est le point
    If Y > 1 Then                           ' il y a déjà un point ou une virgule
        KeyNumerique = False                ' donc on n'ajoute pas ce caractère
        Exit Function
        End If
   
Suite:
Dim I       As Integer ' la variable
For I = LBound(N) To UBound(N)
    If KeyAscii = N(I) Then  ' On teste si ce caractère est autorisé
        KeyNumerique = True  ' Oui ? alors on le garde
        Exit Function
        End If
Next I ' Il ne correspond pas ? on compare le caractère suivant

End Function

Compatibilité : C"est ma première version ici. Version 1.0

A voir également

Ajouter un commentaire Commentaires
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
20 déc. 2019 à 07:22
GOTO déconseillé
on voit bien là quelqu'un qui n'a aucune conscience de ce qui se passe une fois compilé ^^
des sauts; des sauts et encore...... des sauts
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
5 avril 2019 à 07:05
Un truc comme ça
Like « # » or like « #.# »
.
Sinon une regex de ce genre
\d+([\.,]\d+)?
Galactus13
Messages postés
332
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
10 avril 2020
1
5 avril 2019 à 02:46
J'ai en effet, placé la coloration syntaxique ^^
Pour la chaine complète, like ne fonctionne pas , je n'ai pas réussi.
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
4 avril 2019 à 17:53
Comme précisé dans le premier lien que je t’ai donné, il est decrit comment mettre la coloration sans le bouton.
Et quand je dis de tester avec like, c’est sur la chaine complète.
Galactus13
Messages postés
332
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
10 avril 2020
1
Modifié le 4 avril 2019 à 17:15
Bonjour,
Désoler, le descriptif a disparu quand j'ai voulu corriger de défaut d'affichage, toujours pas corrigé puisque je n'ai pas le bouton qui permet le code !
Pour faire simple le goto est là pour passer l'option null ... je n'aime pas les gotos quand on peu s'en passer mais dans ce cas de figure, il n'est pas imbriqué dans une boucle, donc pas de risque de plantage ...
Il s'agit d'un vieux code écrit enVB ... 5 !
Oui, oui ! convertie a la base d'un code que j'avais écrit en Qbasic et bien sur amélioré ! Ensuite, je pouvais aussi utiliser par exemple:

If Not Chr(KeyAscii) Like "[0123456789-]" Then KeyAscii = 0

Mais cette fonction bien que très pratique et fonctionnel à un sérieux défaut:
Il accepte des virgule ou des points a volonté dans le textBox,
donc mon petit code permet de corriger cela avec un code simple et somme toute court.
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.