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 :

suppression caractères spéciaux


Sujet :

IHM

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut suppression caractères spéciaux
    Bonjour et bonne année 2010,

    J'ai un champ numérique où il est impossible de taper des caractères autres que des chiffres ; voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub GSM_KeyPress(KeyAscii As Integer)
    If ((KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8)) Then
    Beep
    KeyAscii = 0
    End If
    End Sub
    Le problème, c'est que les utilisateurs copient des fois cette valeur d'un autre programme et la colle dans le champ.

    Comment pourrais-je faire pour supprimer ces caractères spéciaux tels que / ou .

    merci

  2. #2
    Membre habitué Avatar de miamou
    Inscrit en
    Novembre 2009
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 161
    Points : 178
    Points
    178
    Par défaut
    Bonjour,
    pourquoi ne pas penser à utiliser un masque de saisi sans passer par code!

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par miamou Voir le message
    Bonjour,
    pourquoi ne pas penser à utiliser un masque de saisi sans passer par code!
    impossible, ce n'est pas toujours le meme masque de saisie ...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Comment pourrais-je faire pour supprimer ces caractères spéciaux tels que / ou .
    Je vois bien la fonction Replace(), mais cela risque d'être lourd à utiliser.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    et avec une requete mise a jour ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    mais cela risque d'être lourd à utiliser.
    ce que je voulais dire, c'est que comme il faut lui préciser quel caractère on recherche, ça risque de faire beaucoup de possibilité !

    Un autre solution serait de créer une fonction VBA qui scanne chaque caractère et le supprime si il n'a pas le bon code ASCII.

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par fgiambelluco Voir le message
    Re ce que je voulais dire, c'est que comme il faut lui préciser quel caractère on recherche, ça risque de faire beaucoup de possibilité !

    Un autre solution serait de créer une fonction VBA qui scanne chaque caractère et le supprime si il n'a pas le bon code ASCII.
    en fait il n'y a ke 2 caractères a suprimer : "/" et "."

    aurais-tu un code sur lequel je pourrais me baser par hazard ?

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour Lucas,

    Voici un code que j'utilise et qui pourrais te guider :

    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
    Public Function fSupprimeCars(ByVal chaine As String) As String
    Dim Position As Integer 'Remplace tous les carractères spéciaux
     
    For Position = Len(chaine) To 1 Step -1
     
    Select Case Mid(chaine, Position, 1)
     
    Case "à", "á", "â", "ã", "ä", "å", "Ä"
     
    chaine = Left(chaine, Position - 1) & "a" & Mid(chaine, Position + 1)
     
    Case "ç"
     
    chaine = Left(chaine, Position - 1) & "c" & Mid(chaine, Position + 1)
     
    Case "é", "è", "ë", "ê"
     
    chaine = Left(chaine, Position - 1) & "e" & Mid(chaine, Position + 1)
     
    Case "ì", "í", "î", "ï"
     
    chaine = Left(chaine, Position - 1) & "i" & Mid(chaine, Position + 1)
     
    Case "ñ"
     
    chaine = Left(chaine, Position - 1) & "n" & Mid(chaine, Position + 1)
     
    Case "ò", "ó", "ô", "õ", "ö"
     
    chaine = Left(chaine, Position - 1) & "o" & Mid(chaine, Position + 1)
     
    Case "ù", "ú", "û", "ü"
     
    chaine = Left(chaine, Position - 1) & "u" & Mid(chaine, Position + 1)
     
    Case "ý", "ÿ"
     
    chaine = Left(chaine, Position - 1) & "y" & Mid(chaine, Position + 1)
     
    Case "&", "'", """", "~", "{", "[", "-", "|", "`", "_", "\", "^", "@", ")", "(", "]", "=", "+", "}", "^", _
                                            "$", "£", "¤", "*", "µ", "ù", "%", ",", "?", ";", ".", ":", "/", "!", "§"
    chaine = Left(chaine, Position - 1) & "" & Mid(chaine, Position + 1)
     
    End Select
     
    Next Position
     
    fSupprimeCars = chaine
     
    End Function
    Pour utiliser le code :
    Me.Monchamp=fSupprimeCars(Me.MonChamp)

    En espérant t'avoir aidé.

    Marsouin

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonjour,
    En principe avec ton code, si le champ est numérique à la base, il ne peut accepter autre chose que des chiffres entier en frappe et numérique entier ou double selon sa définition de base en copier coller.
    S’il accepte autre chose en copier coller il est probablement Texte, il n’accepte que des chiffres à la frappe et tout en copier/coller – pour empêcher les caractères . et / seulement comme fgiambelluco je mettrais le code suivant par exemple sur l’évènement après mise a jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Private Sub champ_AfterUpdate()
    Me.champ = Nz(Replace(Me.champ, "/", ""), 0)
    Me.champ = Nz(Replace(Me.champ, ".", ""), 0)
    End Sub

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Merci pour vos réponses mais j'ai préféré passer par une requête et j'ai fini par trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Elink SET MOBILE = Replace(Mobile,"/","")
    Par contre, je suis occupé à chercher comment supprimer toutes les lettres ...

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour

    Je mettais amusé à faire une fonction qui permettait de faire comme ton KeyPress
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function SupAsci(VNumber)
        Dim pos As Integer, i As Integer
        For i = Len(VNumber) To 1 Step -1
            If (Asc(Mid(VNumber, i, 1)) < 48 Or Asc(Mid(VNumber, i, 1)) > 57) And Asc(Mid(VNumber, i, 1)) <> 8 Then
                VNumber = Mid(VNumber, 1, i - 1) & Mid(VNumber, i + 1)
            End If
        Next i
        SupAsci = VNumber
    End Function
    Fonction que tu peux appeler dans une requète
    Genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Elink SET MOBILE_PROPRE = SupAsci(Mobile)

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Bonjour,

    Après avoir crée ta requête j'ai comme message : Fonction 'SupAsci' non définie dans l'expression

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re

    As-tu bien copié la fonction SupAsci dans un module ?

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Merde j'ai oublié

Discussions similaires

  1. Suppression caractères spéciaux
    Par vince29 dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2011, 11h44
  2. Suppression caractères spéciaux "^H"
    Par nuts62 dans le forum Ruby
    Réponses: 11
    Dernier message: 19/11/2010, 10h19
  3. Réponses: 1
    Dernier message: 09/08/2010, 18h06
  4. Suppression de caractères spéciaux
    Par khasanouray dans le forum Langage
    Réponses: 7
    Dernier message: 26/06/2007, 15h30
  5. Suppression de caractères spéciaux
    Par nellynew dans le forum Access
    Réponses: 3
    Dernier message: 18/09/2006, 10h14

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