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 :

faire une fonction de cotrole de saisie


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 167
    Points : 47
    Points
    47
    Par défaut faire une fonction de cotrole de saisie
    salut tous le monde
    je vous faire ce code dans une fonction qui a la zone de texte "text" comme paramétre comment peut on faire ca ??
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    'Contrôleur de saisie numérique
       With t_tel
          Select Case KeyAscii
             Case 44, 46  'Le caractère est un point ou une virgule
                If .Text = "" Then  'Si cest le premier caractère
                   KeyAscii = 0
                   .Text = "0" & SDecimal
                   .SelStart = 2
                Else  'Sinon...
                   If InStr(1, .Text, SDecimal, vbTextCompare) Then 'La virgule existe déjà
                      KeyAscii = 0  'On supprime la frappe
                   Else
                      KeyAscii = Asc(SDecimal)  'On récupère le code ascii du symbole décimal
                   End If
                End If
             Case 48  'Le caractère est un zéro
                'Si le premier chiffre est un zéro, on supprime la frappe d'un nouveau zéro
                If .Text = Chr(48) Then KeyAscii = 0
             Case 8 'Il s'agit de la touche de retour arrière
                'on accepte la frappe
             Case 49 To 57  'Il s'agit d'un chiffre différent de zéro
                'Si le premier chiffre est un zéro, on le supprime
                If .Text = Chr(48) Then .Text = ""
             Case Else  'Dans les autres cas...
                'On supprime la frappe
                KeyAscii = 0
          End Select
       End With
    merci en avance

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je verrais bien quelque chose comme 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Const SDECIMAL = "."
     
    Private Sub Text1_KeyPress(KeyAscii As Integer)
      CtrlSaisie Text1, KeyAscii
    End Sub
    Private Sub Text2_KeyPress(KeyAscii As Integer)
      CtrlSaisie Text2, KeyAscii
    End Sub
     
    Private Sub CtrlSaisie(Ctrl As TextBox, KeyAscii As Integer)
    'Contrôleur de saisie numérique
       With Ctrl
          Select Case KeyAscii
             Case 44, 46  'Le caractère est un point ou une virgule
                If .Text = "" Then  'Si cest le premier caractère
                   KeyAscii = 0
                   .Text = "0" & SDECIMAL
                   .SelStart = 2
                Else  'Sinon...
                   If InStr(1, .Text, SDECIMAL, vbTextCompare) Then 'La virgule existe déjà
                      KeyAscii = 0  'On supprime la frappe
                   Else
                      KeyAscii = Asc(SDECIMAL)  'On récupère le code ascii du symbole décimal
                   End If
                End If
             Case 48  'Le caractère est un zéro
                'Si le premier chiffre est un zéro, on supprime la frappe d'un nouveau zéro
                If .Text = Chr(48) Then KeyAscii = 0
             Case 8 'Il s'agit de la touche de retour arrière
                'on accepte la frappe
             Case 49 To 57  'Il s'agit d'un chiffre différent de zéro
                'Si le premier chiffre est un zéro, on le supprime
                If .Text = Chr(48) Then .Text = ""
             Case Else  'Dans les autres cas...
                'On supprime la frappe
                KeyAscii = 0
          End Select
      End With
    End Sub

  3. #3
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Si tu veux améliorer ta fonction :
    Tu peux n'autoriser que le paramètre régional (le "." ou la "," mais un seul des deux), regarde ce code, il y à une fonction pour réccupérer ce paramètre. Après il suffit de faire en sorte que si l'utilisateur entre l'autre caractère celui-ci est remplacé par le paramètre régional.
    http://www.developpez.net/forums/sho...86&postcount=6

  4. #4
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Voici une autre facon de faire, sans utiliser le paramètre régional.
    Par contre la procédure est appelée lors du LostFocus car si on appelais cette fonction dans le KeyPress, si je veux taper 3,503 alors dès que je tape le 0, il s'efface. Cette méthode enlève aussi les 0 en fin de nombre s'il y en à.
    Voici le code :
    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
    18
     
    Private Sub Text1_LostFocus()
    CtrlSaisie Text1
    End Sub
     
    Private Sub CtrlSaisie(Ctrl As TextBox)
    Dim Nombre As Double
    Dim Texte As String
     
    Texte = Replace(Ctrl.Text, ".", ",")
    If Not (IsNumeric(Texte)) Then
        Ctrl.Text = 0
    Else
        Nombre = Texte
        Ctrl.Text = Nombre
    End If
     
    End Sub

Discussions similaires

  1. Comment faire une fonction - procédure
    Par Madmac dans le forum C
    Réponses: 14
    Dernier message: 12/08/2006, 09h57
  2. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04
  3. [C#][Débutant] Comment faire une fonction FindWindow ?
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 13h19
  4. Faire une fonction
    Par philippef dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/04/2006, 17h14
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

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