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

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

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.