begin process at 2012 02 10 23:04:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > TEXTBOX NUMERIQUE

TEXTBOX NUMERIQUE


 Information sur la source

Note :
9,33 / 10 - par 6 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Classé sous :textbox, numérique Niveau :Débutant Date de création :20/12/2000 Vu :11 208

Auteur : GMI

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Le code suivant permet de limiter la saisie dans un textbox à un ensemble de caractères. En particulier, si on désire que le champs contienne un nombre, on est sur qu'on n'aura aucune erreur.

Source

  • 'Le code ci après utilise l'évenement KeyPress d'un contrôle pouvant gérer cet évenement ainsi
  • 'que les propriétés "Text", "SelText" et "SelStart" pour permettre la saisie de champs numériques
  • Private Sub Text1_KeyPress(KeyAscii As Integer)
  • SaisieText Text1, KeyAscii, True, False
  • KeyAscii = 0
  • End Sub
  • 'Les paramètres de la procédure Saisie Text sont :
  • 'TxtChamps As Control : Tout contrôle qui gère les propriétés "Text", "SelText" et "SelStart"
  • 'KeyAscii As Integer : Code ASCII de la touche pressée
  • 'Numerique As Boolean : True si le champs est numérique, False sinon
  • 'Optional Negatif As Boolean : True si le nombre peut être négatif,
  • 'False sinon (Si ce paramètre est omis, le champs est positif)
  • 'Optional Etendue As String : Si le champs n'est pas numérique, on peut
  • 'restreindre la saisie aux caractères contenus dans Etendue
  • 'Par exemple : Etendue = "AZERTYiopmlk", seules ces lettres seront permises
  • Public Sub SaisieText(TxtChamps As Control, ByVal KeyAscii As Integer _
  • , ByVal Numerique As Boolean, Optional ByVal Negatif As Boolean, _
  • Optional ByVal Etendue As String)
  • Dim Position As Long
  • Dim Nombre As Single
  • Dim SeparateurDecimal As String
  • 'Definition du séparateur décimal défini dans le panneau de configuration
  • Nombre = Val("1.1")
  • SeparateurDecimal = Mid(Nombre, 2, 1)
  • 'Definition de l'action de la touche "Retour arrière"
  • If KeyAscii = 8 Then
  • TxtChamps.SelText = ""
  • Position = TxtChamps.SelStart
  • If Position <> 0 Then
  • Select Case True
  • Case Position = 1 And Len(TxtChamps.Text) > 1
  • TxtChamps.Text = Mid(TxtChamps.Text, 2)
  • Case Position = Len(TxtChamps.Text)
  • TxtChamps = Left(TxtChamps.Text, Position - 1)
  • Case Else
  • TxtChamps.Text = Left(TxtChamps.Text, Position - 1) & _
  • Mid(TxtChamps.Text, Position + 1)
  • End Select
  • TxtChamps.SelStart = Position - 1
  • End If
  • Exit Sub
  • End If
  • ' Si le champs est numérique
  • If Numerique Then
  • Etendue = "0123456789" & SeparateurDecimal
  • If Negatif Then Etendue = Etendue & "-"
  • If Chr(KeyAscii) = "." Then KeyAscii = Asc(SeparateurDecimal)
  • If Chr(KeyAscii) = "," Then KeyAscii = Asc(SeparateurDecimal)
  • If InStr(Etendue, Chr(KeyAscii)) = 0 Then Exit Sub
  • If Chr(KeyAscii) = SeparateurDecimal And _
  • InStr(TxtChamps.Text, SeparateurDecimal) <> 0 And _
  • InStr(TxtChamps.SelText, SeparateurDecimal) = 0 Then Exit Sub
  • If Chr(KeyAscii) = "-" And TxtChamps.SelStart <> 0 Then Exit Sub
  • If Chr(KeyAscii) = "-" And InStr(TxtChamps.Text, "-") <> 0 And _
  • InStr(TxtChamps.SelText, "-") = 0 Then Exit Sub
  • TxtChamps.SelText = Chr(KeyAscii)
  • Else
  • If InStr(Etendue, Chr(KeyAscii)) <> 0 Then TxtChamps.SelText = Chr(KeyAscii)
  • End If
  • End Sub
'Le code ci après utilise l'évenement KeyPress d'un contrôle pouvant gérer cet évenement ainsi
'que les propriétés "Text", "SelText" et "SelStart" pour permettre la saisie de champs numériques

Private Sub Text1_KeyPress(KeyAscii As Integer)
   SaisieText Text1, KeyAscii, True, False
   KeyAscii = 0
End Sub

'Les paramètres de la procédure Saisie Text sont :
'TxtChamps As Control : Tout contrôle qui gère les propriétés "Text", "SelText" et "SelStart"
'KeyAscii As Integer : Code ASCII de la touche pressée
'Numerique As Boolean : True si le champs est numérique, False sinon
'Optional Negatif As Boolean : True si le nombre peut être négatif, 
'False sinon (Si ce paramètre est omis, le champs est positif)
'Optional Etendue As String : Si le champs n'est pas numérique, on peut 
'restreindre la saisie aux caractères contenus dans Etendue
'Par exemple : Etendue = "AZERTYiopmlk", seules ces lettres seront permises

Public Sub SaisieText(TxtChamps As Control, ByVal KeyAscii As Integer _
           , ByVal Numerique As Boolean, Optional ByVal Negatif As Boolean, _

             Optional ByVal Etendue As String)
   Dim Position As Long
   Dim Nombre As Single
   Dim SeparateurDecimal As String
   'Definition du séparateur décimal défini dans le panneau de configuration
   Nombre = Val("1.1")
   SeparateurDecimal = Mid(Nombre, 2, 1)
   'Definition de l'action de la touche "Retour arrière"
   If KeyAscii = 8 Then
      TxtChamps.SelText = ""
      Position = TxtChamps.SelStart
      If Position <> 0 Then
         Select Case True
           Case Position = 1 And Len(TxtChamps.Text) > 1
                TxtChamps.Text = Mid(TxtChamps.Text, 2)
           Case Position = Len(TxtChamps.Text)
                TxtChamps = Left(TxtChamps.Text, Position - 1)
           Case Else
                TxtChamps.Text = Left(TxtChamps.Text, Position - 1) & _
                  Mid(TxtChamps.Text, Position + 1)
          End Select
          TxtChamps.SelStart = Position - 1
       End If
      Exit Sub
   End If
   ' Si le champs est numérique
   If Numerique Then
      Etendue = "0123456789" & SeparateurDecimal
      If Negatif Then Etendue = Etendue & "-"
      If Chr(KeyAscii) = "." Then KeyAscii = Asc(SeparateurDecimal)
      If Chr(KeyAscii) = "," Then KeyAscii = Asc(SeparateurDecimal)
      If InStr(Etendue, Chr(KeyAscii)) = 0 Then Exit Sub
      If Chr(KeyAscii) = SeparateurDecimal And _
         InStr(TxtChamps.Text, SeparateurDecimal) <> 0 And _
         InStr(TxtChamps.SelText, SeparateurDecimal) = 0 Then Exit Sub
      If Chr(KeyAscii) = "-" And TxtChamps.SelStart <> 0 Then Exit Sub
      If Chr(KeyAscii) = "-" And InStr(TxtChamps.Text, "-") <> 0 And _
         InStr(TxtChamps.SelText, "-") = 0 Then Exit Sub
      TxtChamps.SelText = Chr(KeyAscii)
   Else
      If InStr(Etendue, Chr(KeyAscii)) <> 0 Then TxtChamps.SelText = Chr(KeyAscii)
   End If
End Sub
 

 Conclusion

Le code ci après est valable pour tout contrôle qui gère l'évenement KeyPress ainsi que les propriétés SelText, SelStart ...


 Sources du même auteur

FONCTION INSTRC
FONCTION VALEUR PLUS EFFICACE QUE LA FONCTION VAL DE VISUAL ...
RÉSOLUTION DE SYSTÈMES LINÉAIRES PAR LA MÉTHODE DE GAUSS

 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DÉPLACEMENT AVEC FLÈCHES DANS UN PAVÉ DE TEXTBOX 9X9 DYNAMIQ... par EhJoe
Source avec Zip PARAMETRES SETTINGS VBA par Le Pivert
Source .NET (Dotnet) [VB.NET] NUMERIXBOX - UNE TEXTBOX NUMÉRIQUE QUI GÈRE LES DÉC... par Benouille
Source .NET (Dotnet) TEXTBOX NUMÉRIQUE par GG29
FORMATER UN TEXTBOX (N'ACCEPTER QUE DES CHIFFRES) par Neo.balastik

Commentaires et avis

Commentaire de vero le 07/01/2002 20:20:13

Merci pour ce code il est bien pratique

Commentaire de TheGo le 20/03/2002 13:58:44

C vraiment pratique ...
En plus mit dans un moduel ca peut servir pour tout le projet, c vraiment trop cool :)
Merci

Commentaire de martyrs le 29/04/2003 19:50:15

simple et efficace : j'ai pas trouvé mieux pour gérer un textbox

Commentaire de forchi le 05/02/2007 11:03:44

Trés bien, merci...  :)

Commentaire de bensalahfatma le 30/01/2008 22:48:13

c'est bien merci

Commentaire de bensalahfatma le 30/01/2008 22:48:56

c'est bien je vous remercie

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

test valeur textbox, numérique ou non ? [ par ranouf ] je sais que c le truc bato mais je retrouve plus comment on fait pour tester si un textbox est numérique ou non.if (txtPoste.text= '''du numérique''') Isnumeric [ par Vivolenantais ] Comment fait-on pour ne rentrer soit que du num&#233;rique dans un textbox, soit que du alphanum&#233;rique. Et lorsqu'un textbox est pr&#233;vue pour test numérique dans une textbox [ par ALFA2K ] Je voudrais tester le contenu d'une textbox. Cette text box est reliée à une base access via un contrôle ADODC ( datasource et datafield ) . La valeur Passage entre Champ numérique et Textbox d'un formulaire [ par pasmar250659 ] Bonjours,Je travail sur une table access ayant principalement des champs de Type DoubleEtant novice en .net - je passe de VB5 sans adoJe me pose une q Vb.Net Condition is not numérique ??? dans un textbox [ par MagDix ] Salut... Je cherche à faire une condition spécial.Je ne sais pas si c'est possible à faire dans une condition. Je veux faire une condition qu controler si le contenu d'un textbox est numérique et si une date est valide [ par Eric25 ] Bonsoir,Après plus d'une heure de recherche sur msdn sans résultats probants, j'abandonne...Je cherche tout simplement à verifier si la valeur saisie SetFocus [ par PFourrey ] Bonsoir &#224; tous. Je d&#233;bute en VBA et j'ai quelques souci.Pour me faire la main, j'ai voulu faire une petite calculatrice. J'ai un TextBox ou Format personnel dans un textbox. [ par sancho12345 ] Bonjour à tous,   Une petite question au niveau des formats en VB : <p class="MsoNo Faire qu'un point entrer dans une textbox(valeur numérique) se transforme en virgule [ par ninos32 ] Bonjour, j'ai trouver pas mal de postes relatifs a ma question mais aucun ne m'a donné la solution mon problème est que chez moi que j'entre un point VS2008 - Comment faire saisir que du numérique dans un textbox [ par progbuilder ] Bonjour, J'ai sur ma WinForm des champs que l'utilisateur doit remplir en numérique. Par exemple des quantité? Comment je peux forcer


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales