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

VBA Access Discussion :

Ne garder que les chiffres [AC-2002]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Ne garder que les chiffres
    Bonjour,

    je me tourne aujourd'hui vers vous pour une petite fonction que vous devez sans doute connaitre, mais que je n'arrive pas à créer (étant nouveau en VBA...)

    Je cherche simplement à supprimer, dans un champ Access, tout caractère autre que 0 1 2 3 4 5 6 7 8 9

    Auriez vous ceci s'il vous plaît ?

    Je vous remercie par avance.

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    La fonction Replace() ne te convient pas ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour la réponse

    La fonction Replace remplace une chaine de caractère (si je ne me trompe pas )

    Cependant, je cherche à éliminer tout ce qui n'est pas numérique en fait

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    Un exemple parmis d'autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function QueChiffre(strChaine As String) As Integer
    Dim i As Integer
    Dim strCurseur As String
    For i = 1 To Len(strChaine)
        strCurseur = Mid(strChaine, i, 1)
        If IsNumeric(strCurseur) Then _
            QueChiffre = QueChiffre & strCurseur
    Next i
    End Function
    Sub essai()
    MsgBox QueChiffre("2ER22")
    End Sub

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci !

    Cependant, lors de l'éxecution, un MsgBox apparait me disant "erreur d'execution '6' : depassement de capacité

    Et je ne peux plus rien faire a part ouvrir le debogeur..

    Savez vous ce que je dois modifier ?

    Est ce parce que ma base est trop grande ? (57000 lignes)

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Les chaines à traiter sont grande ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Points : 355
    Points
    355
    Par défaut
    Bonjour,

    Ce n'est pas lié à la taille de la base mais au type de donnée.

    Avec du double cela devrait aller mieux mais la meilleure solution serait d'adapter au mieux le type (integer / long / double ...) a la valeur max de chaine.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function QueChiffre(strChaine As String) As Double

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par Access Newbie Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function QueChiffre(strChaine As String) As Double
    Il faudra modifier i aussi dans ce cas puisqu'il prend la longeur de la chaine. En long plutot que double dans un premier temps. Mais bon sachant que dans un champ texte on ne peut stocker que 255 caractères et dans un mémo 65535, le problème me semble ailleurs.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Points : 355
    Points
    355
    Par défaut
    Citation Envoyé par Tofalu Voir le message
    Il faudra modifier i aussi dans ce cas puisqu'il prend la longeur de la chaine. En long plutot que double dans un premier temps. Mais bon sachant que dans un champ texte on ne peut stocker que 255 caractères et dans un mémo 65535, le problème me semble ailleurs.
    Très juste

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

    Citation Envoyé par angku Voir le message
    Est ce parce que ma base est trop grande ? (57000 lignes)
    Comment utilises-tu la fonction que t'a fourni Tofalu ?

    Philippe

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Désolé pour la réponse tardive.

    Alors si je change le type de données en "double", cela marche.

    Cependant, comme il s'agit de numéros de téléphones étrangers et français, si il y a un zéro en début de chaîne, celui ci est supprimé :/


    Mais cela n'est pas très grave, je pense pouvoir passer outre.
    les chaînes font moins de 20 caractères, 10 en général, voir 0

    @Philippe JOCHMANS : je fais une mise à jour en utilisant la fonction sur ma base.


    (et merci pour votre précieuse aide )

  12. #12
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    C'est parce qu'en fait le résultat que tu souhaites c'est une chaîne de caractères et non un nombre (les zéros non significatifs sont enlevés sur les nombres)

    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function QueChiffre(strChaine As String) As String
    Dim i As Integer
    Dim strCurseur As String
    For i = 1 To Len(strChaine)
        strCurseur = Mid(strChaine, i, 1)
        If IsNumeric(strCurseur) Then _
            QueChiffre = QueChiffre & strCurseur
    Next i
    End Function

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Tout simplement parfait !

    Merci

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

Discussions similaires

  1. regex pour ne garder que les chiffres et les ;
    Par webol dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2015, 15h48
  2. [AC-2013] Ne garder que les chiffres
    Par JulienEvrard dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/12/2014, 14h40
  3. [RegEx] Garder que les chiffres ! ! !
    Par tdelacou dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2012, 14h36
  4. un input qui accepte que les chiffres ?
    Par VerrNum dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/03/2006, 13h28
  5. un champ n'accepte que les chiffres....
    Par fadex dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/10/2005, 14h18

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