Algo. *** parfait et infaillible *** pour la saisie d'un nombre décimal et/ou négatif

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 750 fois - Téléchargée 42 fois

Contenu du snippet

Ce code gère la virgule et la négation.
Il est INFAILLIBLE et OPTIMISE le plus possible.
Donc si vous arrivez ( par un miracle ou que sais-je à l'optimiser encore plus ) prévenez moi je suis PRENEUR :=)

Ce code a pour but d'éviter les "betises" de l'utilisateur.
Lorsque vous acceptez les caractères - et . rien n'indique leur position.
Ce code ci empeche la saisie par exemple de : ".-45" ou meme "--45"
ou les signes sont acceptés mais rendent la saisie erronée.

Propriété du code :
--> Il n'accepte qu'une fois les caracteres - et .
--> Il les gère sans comettre d'erreur. ( Ils ne peuvent apparaitre deux fois )
--> Il est intelligent : Si vous pressez le - ou . il accete suivant le cas.
--> ( Possibilité de considérer la virgule comme le point )

L'expérience illustrant la réalité, essayez par vous même...

Source / Exemple :


' L'objet s'appelle :  TEXTE 
'RAPPEL : lorsque l'on ecris TEXTE.text, il s'agit de la forme exacte de TEXTE,
' qui prend par défaut la propriété texte.

Private Sub TEXTE_KeyPress(Index As Integer, KeyAscii As Integer)

If KeyAscii > 57 Or KeyAscii < 48 And KeyAscii <> 8 Then

Select Case Chr(KeyAscii)
   Case "."  ',","  Si vous voulez que "," soit consideré comme "."
        'KeyAscii = Asc(".")
     If InStr(1, TEXTE, ".") Or Mid(TEXTE, TEXTE.SelStart + 1, 1) = "-" Then
     If Not (InStr(1, TEXTE.SelText, ".")) Then KeyAscii = 0
     End If
   Case "-"
     Dim MEM As Byte
     MEM = TEXTE.SelStart
     If InStr(1, TEXTE, "-") Then
       If Not (InStr(1, TEXTE.SelText, "-")) Then
     'Cette ligne  met SelStart à 0 donc vala pk on l'a memorisé avant !
       TEXTE = Mid(TEXTE, 2, TEXTE.SelStart - 1) _
             & Right(TEXTE, Len(TEXTE) - TEXTE.SelStart)
       TEXTE.SelStart = MEM - 1
       KeyAscii = 0
       End If
     Else
       TEXTE = "-" & TEXTE
       TEXTE.SelStart = MEM + 1
       KeyAscii = 0
       End If
   Case Else
     KeyAscii = 0
   End Select

End If

End Sub

A voir également

Ajouter un commentaire

Commentaires

cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
Ahhhhhhhhhhhhhhhhhh c'est horrible mise en forme !!!!!!!!!!
Vais essayer d'arranger ca ... Pk la fenêtre de création n'est pas la même que celle ci !!!!!!!!!!!!!!!!
cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
LA c'est mieux !!! :)
cs_shivan
Messages postés
363
Date d'inscription
jeudi 20 décembre 2001
Statut
Membre
Dernière intervention
25 août 2003
-
ben si tu veux l'optimiser plus, tu utilise les regexp ki sont kan meme plus rapide que instr... mais bon... tout ca pour ca...
sinon c bien !

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.