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
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.