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 4 132 fois - Téléchargée 45 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_shivan Messages postés 363 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 25 août 2003
17 juil. 2002 à 10:27
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 !
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
17 juil. 2002 à 02:28
LA c'est mieux !!! :)
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
16 juil. 2002 à 23:19
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 !!!!!!!!!!!!!!!!

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.