IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

verification textbox only numeric


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut verification textbox only numeric
    bonjour,

    voila sur ma forme, j'ai plein de textbox, permettant la saisie des paramètres machines.

    afin de valider uniquement les caracteres j'ai codé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub TxtCt1R2_change()
       Dim OldSelStart As Long
     
    i = Len(TxtCt1R2.Text)
          If Not IsNumeric(Right(Left(TxtCt1R2.Text, i), 1)) Then
            If Not (Right(Left(TxtCt1R2.Text, i), 1)) = "." Then
                If Not (Right(Left(TxtCt1R2.Text, i), 1)) = "," Then
                ' Enregistre la position actuelle du curseur dans le Text1
                    OldSelStart = TxtCt1R2.SelStart
                ' Reprend la valeur contenue dans le Text1 ("123b" => 123 ; "b123" => 0)
                    TxtCt1R2.Text = CStr(Val(TxtCt1R2.Text))
                ' Restaure la position du curseur
                    TxtCt1R2.SelStart = OldSelStart
                End If
            End If
      End If
    End Sub
    Au lieu de l'état change j'aurais préféré l'etat validation mais il ne veux pas fonctionner.

    Mon soucis, c'est que j'ai 26 textbox à controler, n'y aurait il pas une méthode me permettant de ne pas répéter cette action 26 fois, afin que mon code soit moins lourds ?

    cordialement

  2. #2
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Salut,
    Essaie de créer une procédure avec en parmètre le nom du textbox.

  3. #3
    Membre confirmé Avatar de AurelieB
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 91
    Par défaut Array
    Pour simplifier tu peux creer un array de TextBox, ainsi la fonction de validation que tu viens d'ecrire marchera pour toutes les controls de l'array.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    j'avais pensé a cette solutions, faire une liste est faire un for each obj...


    mais comment m'y prendre..

  5. #5
    Membre expérimenté Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Par défaut
    Bonjour,
    personnellement, je ne contrôle jamais la saisie utilisateur en cours de frappe, (c'est trop lourd à programmer et encore plus à utiliser), mais seulement à la fin sur un bouton validation.
    Si c'est correct, demande confirmation sinon, Message erreur, Raz des données saisies et l'utilisateur doit se retaper la saisie (ça lui apprendra !!!).
    Dans ton cas, tu aurais juste à faire un isnumeric sur tes controles et si tu les as indexés, un parcours de l'index ou de la collection
    => 3 ou 4 lignes de codes pour l'ensemble de tes contrôles (pas pour chacun !!).
    On utilise aussi un certain nombre de contrôles "payants" (InputPro de farpoint pour ne pas le nommer) un peu plus évolués qu'une textbox (saisie de nombres pré-formatés par exemple) mais de toutes façons généralement le problème n'est que déplacé (ex: valeur impossible).

  6. #6
    Membre confirmé Avatar de AurelieB
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 91
    Par défaut procede
    Si la methode parait convenir, je ne suis pas tres forte pour expliquer la theorie. Je vais te dire comment j'aurais procede, en esperant que ca t'eclaire:

    1. je cree un text_box, je le nomme, mets les proprietes qu'il faut.
    2. je fais une copie du text_box dans la meme form, VB demande si je veux creer un array de control text_box? je reponds oui!
    3. en double-cliquant sur l'un deux, on me propose d'ecrire le code pour

    Private Sub Text1_Change(Index As Integer)
    ........ ici tu ecris le code cite dans ton post
    ...............if Text1(Index).text = ........then
    End Sub

    4. Ensuite si ca marche, je peux creer 24 copies suplementaires de Text1 et on obtient 1 array avec 26 text_box et une seule fonction.

    Bon courage!

  7. #7
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Remplace les IF End If par un Select Case, plus simple et tu peux grouper les textboxes qui nécessitent les mêmes contrôles de données dans le même "Case" !

    C'est vraiment la base de la programmation cela, il faudrait peut-être relire les cours VB accessibles dans la page cours.

    Si tu vérifies juste des chiffres, il existe aussi la fonction IsNumeric de base dans VB6 !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    Bon j'ai réglé mon soucis, j'ai fais comme toi aurélie, ca marche mes controle son bon

    merci à tous pour vos réponses!

    @ khany -> je suis désolé pour toi, je comprend que tu sois blasé par une question comme la mienne, qui comme beaucoup de question est simple quand on connait le langage.
    promis je relis les bases vb, pour la fonction IsNumeric qui est de base dans vb oui je connaissais, elle est meme plus haut dans le code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] verification textbox unique
    Par lolo1878 dans le forum VB.NET
    Réponses: 7
    Dernier message: 08/09/2012, 08h21
  2. Verification de textBox avec expression regulière
    Par GrosBibi dans le forum Windows Forms
    Réponses: 7
    Dernier message: 29/05/2008, 14h57
  3. Réponses: 1
    Dernier message: 03/07/2007, 18h18
  4. [C#]Bridé un TextBox en Valeur Numeric !!!
    Par vinsou___ dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/03/2006, 13h37
  5. [C#]Textbox de datagrid en read only
    Par kenzo080 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/08/2005, 17h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo