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 :

Fonction pour contrôler la saisie des entiers


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut Fonction pour contrôler la saisie des entiers
    Bonjour

    Je cherche une fonction qui permet de contrôler la saisie d'entiers (positifs ou négatifs). Celle que j'utilise actuellement ne gére que les entiers positifs.
    Scuse me while I kiss the sky ! Jimi Hendrix

  2. #2
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    on peux avoir le code ??
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  3. #3
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par sovo
    on peux avoir le code ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub obltxtKilometrage_KeyPress(Index As Integer, KeyAscii As Integer)
        If KeyAscii <> 8 Then
            If Not IsNumeric(Chr(KeyAscii)) Then
               KeyAscii = 0
               Beep
            End If
        End If
    End Sub
    Scuse me while I kiss the sky ! Jimi Hendrix

  4. #4
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub obltxtKilometrage_KeyPress(Index As Integer, KeyAscii As Integer)
        If (keyascii < vbkey0 or keyascii > vbkey9) and keyascii <> 8 and key ascii <> vbkeyminus Then
               KeyAscii = 0
               Beep
        End If
    End Sub
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  5. #5
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Merci sovo
    Sauf que les expressions comme 888-9996-6699 risquent de passer entre les mailles du filet. En supposant que vbkeyminus = "-"
    Scuse me while I kiss the sky ! Jimi Hendrix

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub obltxtKilometrage_KeyPress(Index As Integer, KeyAscii As Integer)
        If (keyascii < vbkey0 or keyascii > vbkey9) and keyascii <> 8 and key ascii <> vbkeyminus Then
               KeyAscii = 0
               Beep
        End If
        if keyascii= vbkeyminus then
                 if instr(obltxtKilometrage,"-") then
                         KeyAscii = 0
                         Beep
                 end if
        End If
     
    End Sub
    Maintenant quid de l'utilsateur qui fait un copier/coler sur ton textbox ?
    Meme pas de keypress declenché !

    Personellement ,Je deconseille l'utilisation de keypress pour tester une saisie. je prefere utiliser l'evenement change
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  7. #7
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    une autre proposition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub obltxtKilometrage_KeyPress(Index As Integer, KeyAscii As Integer)
        If (keyascii < vbkey0 or keyascii > vbkey9) and keyascii <> 8 and key ascii <> vbkeyminus Then
               KeyAscii = 0
               Beep
        End If
        if keyascii= vbkeyminus then
                 if left(obltxtKilometrage.text,1) = "-" then
                         obltxtKilometrage.text = mid(obltxtKilometrage.text,2,len(obltxtKilometrage.text))
                 else
                         obltxtKilometrage.text = "-" & obltxtKilometrage.text
                 end if
        End If
     
    End Sub
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  8. #8
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Merci
    Je teste ensuite je vous dis ce que ça a donné
    Scuse me while I kiss the sky ! Jimi Hendrix

  9. #9
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Merci
    J'ai trouvé un vieux code (qu'on m'avait proposé ici même) qui gère en même temps les réels, on peut définir le nombre de chiffres après la virgule.
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Public Function DecControl(KeyAscii As Integer, text As TextBox, 
    ByVal NOOFDEC As Integer) As Integer
    Dim a As Integer
        If KeyAscii = 8 Then
            DecControl = KeyAscii
            Exit Function
        End If
        If NOOFDEC = 0 Then
            If InStr(1, "0123456789-", Chr(KeyAscii)) = 0 Then
                DecControl = 0
                Exit Function
            Else
                DecControl = KeyAscii
                Exit Function
            End If
        Else
            If InStr(1, "0123456789,-", Chr(KeyAscii)) = 0 Then
                DecControl = 0
                Exit Function
            End If
        End If
     
        If Len(text) - text.SelStart > NOOFDEC And Chr(KeyAscii) = "," Then
            DecControl = 0
            Exit Function
        End If
        If KeyAscii <> 8 Then
        If InStr(1, text, ",") <> 0 And Chr(KeyAscii) = "," Then
            DecControl = 0
            Exit Function
        End If
        Dim pos As Integer
        Dim ret As Integer
        pos = InStr(1, text.text, ",")
        If pos = 0 Then
            If InStr(1, "0123456789,-", Chr(KeyAscii)) = 0 Then
                ret = 0
            Else
                ret = KeyAscii
            End If
        Else
            'IF AFTER DECIMAL
            If text.SelStart + 1 > pos Then
                a = Len(text.text) - InStr(1, text, ",")
                If a >= NOOFDEC Then
                    ret = 0
                Else
                    ret = KeyAscii
                End If
            Else
                ret = KeyAscii
            End If
        End If
        Else
            ret = KeyAscii
        End If
        DecControl = ret
    End Function
    Scuse me while I kiss the sky ! Jimi Hendrix

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

Discussions similaires

  1. [XL-2003] Fonction pour faire la somme des cellule jaune
    Par kolann dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/07/2010, 17h00
  2. Contrôler les saisies des JTextField
    Par Relyss dans le forum Composants
    Réponses: 5
    Dernier message: 18/01/2010, 23h00
  3. [E-03] Procédure pour contrôler l'ensemble des objets de type Label
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/03/2009, 10h32
  4. Réponses: 6
    Dernier message: 07/02/2008, 13h33
  5. Réponses: 2
    Dernier message: 08/08/2007, 09h57

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