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

IHM Discussion :

zone saisie interdire la virgule du clavier numériqu pour mail


Sujet :

IHM

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut zone saisie interdire la virgule du clavier numériqu pour mail
    bonjour

    j'ai un champ texte qui est utilise pour rentre des adresse mail.

    je souhaite interdire le point ou la vigule ( . ) du clavier numérique car sous acces ce point est une virgule en réalisé et pour mon mailing si j'ai une virgule sa plante.

    Donc comment faire pour interdire la virgule sur ce champ??

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    N'oubliez pas de consulter la Access

    Juste une petite recherche avec le mot Saisie donne : http://access.developpez.com/faq/ind...hercher=saisie

    Si tu ne trouves pas ton bonheur la-dedans.

    Starec

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    j'ai trouvé sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    La zone de texte avec laquelle nous travaillons se nomme zdtNombre.
    Il suffit de mettre le code suivant :
    Private Sub zdtNombre_KeyDown(KeyCode As Integer, Shift As Integer)
    If (KeyCode = 190) Then
        KeyCode = 188
    End If
    End Sub 
     
     
    Ainsi, lorsque l'utilisateur appuiera sur la touche "." du clavier, celà insérera tout de même une virgule ",".
    donc moi je veux des point au lieux de la virgule donc j'ai fait sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub MAIL_CONTACT_KeyDown(KeyCode As Integer, Shift As Integer)
    If (KeyCode = 188) Then
        KeyCode = 190
    End If
    End Sub
    sa marche pas pk??

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Je n'arrive pas non plus à transformer la virgule en point car il faudrait pouvoir combiner la touche Shift (MAJ) avec la touche 190 (point-virgule/point) pour obtenir un point.

    Par contre tu peux interdire la virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Texte1_KeyDown(KeyCode As Integer, Shift As Integer)
     
    If KeyCode = 188 Or KeyCode = vbKeyDecimal Then
       KeyCode = 0
    End If
    End Sub
    188 : touche virgule/point d'interrogation
    vbKeyDecimal : touche point du clavier numérique

    A+

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    merci bcp sa marche dommage que l'on ne peux pas inverse mais bon pas grave on fera avec

    merci encore

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bon ok, j'ai fini par trouver une bidouille

    Le code est en 3 parties.
    1. déclarations
    2. sub pour l'événement KeyDown (Sur touche appuyée)
      Détermine si on a réellement tapé une virgule (clavier français uniquement) en prenant en compte les touches Caps-Lock et Shift.
      Si oui met variable globale blnVirgule à true
    3. sub pour l'événement KeyPress (Sur touche activée)
      si variable blnVirgule à true, remplace code ascii par celui du point (46).

    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
    ' ________ Section Déclarations _________________________
    Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Integer) As Integer
    Const VK_CAPITAL = &H14  'CAPS-LOCK
     
    Dim blnVirgule As Boolean
    ' ________ Fin Section Déclarations ________________________
     
    ' ________ Touche Appuyée_________________________
    Private Sub Texte0_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim CapsLock As Integer
     
    blnVirgule = False
    CapsLock = GetKeyState(VK_CAPITAL) And 1
    ' Me.txtCaps = CapsLock
     
    If (KeyCode = 188 Or KeyCode = vbKeyDecimal) Then
       If CapsLock = 0 Then
          ' CAPSLOCK = N  SHIFT = N
          If (Shift And acShiftMask) = 0 Then
              blnVirgule = True
          End If
       Else
          If (Shift And acShiftMask) = acShiftMask Then
             ' CAPS-LOCK = O  SHIFT = O
              blnVirgule = True
          ElseIf KeyCode = vbKeyDecimal Then
             ' CAPS-LOCK = O  SHIFT = N, point pavé numérique
              blnVirgule = True
          End If
       End If
       If blnVirgule Then KeyCode = 188 ' n'importe quel code sauf vbKeyDecimal
    End If
    End Sub
    ' ________ Touche Activée_________________________
    Private Sub Texte0_KeyPress(KeyAscii As Integer)
    If blnVirgule Then KeyAscii = Asc(".")
    End Sub
    A+

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    ton derniere code j'ai un probleme sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Integer) As Integer
    Const VK_CAPITAL = &H14  'CAPS-LOCK
     
    Dim blnVirgule As Boolean
    car quand je clique sur "complier a"
    il me marque :
    erreur de compilation seuls des commentaires peuvent apparitre apres end sub, end funtion, oi end property


    comment je fais?

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    On peut essayer de voir avec une variante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub txtEssai_KeyPress(KeyAscii As Integer)
      If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")
        ' Détecte le point et la virgule et remplace
        'le point par une virgule
      If KeyAscii = 8 Then
         KeyAscii = 8 ' Si oui ... On efface
      Else
      If InStr("0123456789.,", Chr(KeyAscii)) = 0 Then ' Caractère non accepté
        KeyAscii = 0                    ' Alors sanction-->Pas pris en compte
      End If
     End If
    End Sub
    Il peut être intéressant de connaître le numéro du Key Ascii depuis un formulaire en appuyant sur n'importe quelle touche du clavier.

    On crée un formulaire et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_KeyPress(KeyAscii As Integer)
    Me.Form.Caption = KeyAscii
    End Sub
    Cordialement.

    Ps: Je découvre que c'est pour une adresse mail...(J'ai retrouvé mes lunettes.) Donc il faut que j'améliore mon travail.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  9. #9
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Citation Envoyé par popofpopof Voir le message
    ton derniere code j'ai un probleme sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Integer) As Integer
    Const VK_CAPITAL = &H14  'CAPS-LOCK
     
    Dim blnVirgule As Boolean
    car quand je clique sur "complier a"
    il me marque :
    erreur de compilation seuls des commentaires peuvent apparitre apres end sub, end funtion, oi end property


    comment je fais?
    Cette partie il faut la mettre au début du module de code du formulaire.
    Dans la partie déclarations, là où on met les variables et constantes globables au module.
    Dans l'éditeur vba tu dois pouvoir lire dans les deux liste déroulantes : (General) et (Déclarations).

    A+

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    ok j'ai comprie
    mais
    mon probleme est quand je veux saisir une adresse mail j'ai que la 1ere lettre qui affiche et apres sa ne fait que change la 1ere lettre je ne veux pas ecrire une adresse en entier

    c quoi le probleme??

    j'ai trouve ci j'enleve cette ligne sa marche mieux

    Me.txtCaps = CapsLock

    PK?? Me.txtCaps sa fait reference a quoi?

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Msg erreur dès saisie 1er caractère
    Je viens de tester cette procédure, j'ai bien créer un module que j'ai nommé 'Init clavier' dans lequel j'ai recopié le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     '________ Section Déclarations _________________________
    Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Integer) As Integer
    Const VK_CAPITAL = &H14  'CAPS-LOCK
     
    Dim blnVirgule As Boolean
    ' ________ Fin Section Déclarations ________________________
    Ensuite sur le contrôle zone de texte 'Mail' j'ai recopié sur événement 'touche appuyée le code suivant :
    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
    Private Sub Mail_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim CapsLock As Integer
     
    blnVirgule = False
    CapsLock = GetKeyState(VK_CAPITAL) And 1
    ' Me.txtCaps = CapsLock
     
    If (KeyCode = 188 Or KeyCode = vbKeyDecimal) Then
       If CapsLock = 0 Then
          ' CAPSLOCK = N  SHIFT = N
          If (Shift And acShiftMask) = 0 Then
              blnVirgule = True
          End If
       Else
          If (Shift And acShiftMask) = acShiftMask Then
             ' CAPS-LOCK = O  SHIFT = O
              blnVirgule = True
          ElseIf KeyCode = vbKeyDecimal Then
             ' CAPS-LOCK = O  SHIFT = N, point pavé numérique
              blnVirgule = True
          End If
       End If
       If blnVirgule Then KeyCode = 188 ' n'importe quel code sauf vbKeyDecimal
    End If
     
    End Sub
    et sur l'évènement 'Touche activée le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Mail_KeyPress(KeyAscii As Integer)
    If blnVirgule Then KeyAscii = Asc(".")
    End Sub
    Quand je reviens sur mon formulaire, et que je saisis n'importe quel touche, j'obtiens ce message d'erreur :
    Erreur de compilation : sub ou Function non définié
    Et sur la fenêtre vba le mot 'GetKeyState' est surligné.

    Faut-il rajouté une référence à mon projet ?
    Je suis sous [AC07]

    Merci
    Pourquoi faire simple, quand on peut faire compliqué ???

  12. #12
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Il fallait tout mettre dans le module de code du formulaire, surtout la variable blnVirgule.

    Sinon changer la portée des déclarations (Private/Public)

    A toute fin utile je mets un lien vers ta solution, plus courte.

    A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/07/2013, 18h09
  2. comment utiliser la virgule du clavier numérique pour un userform
    Par cecile_64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/07/2012, 17h09
  3. Zone saisie numérique comprenant des blancs
    Par pc400 dans le forum AS/400
    Réponses: 2
    Dernier message: 28/01/2011, 15h02
  4. Clavier numérique pour Tablet-PC
    Par igloof dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 12/02/2009, 09h44
  5. Réponses: 4
    Dernier message: 01/09/2008, 22h00

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