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

Access Discussion :

Suupression caractères dans un champ suite import


Sujet :

Access

  1. #1
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut Suupression caractères dans un champ suite import
    Bonjour a tous
    Voila mon problème :
    suite a un import, je me retrouve avec des données qui se retrouveront à créer des doublons dans ma base !
    Pour éviter ces doublons il faudrai que je puisse supprimer dans un champ quelques caractères avant un espace et l'espace lui même !!!
    ex: [MR DUPONT]
    et avoir [DUPONT] seul !!!!
    Mais aussi
    Ex: [MME DURAND] ou [MELLE TRUCMUCHE]
    donc 2 ou 3 ou 4 ou plus caractères, plus l'espace a supprimer !!!
    En fait il faudrai "compter" le nombre de carctères avant l'espace et ensuite supprimer non?
    Mais je ne vois pas comment faire?
    Quelqu'un a une idée ????

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    une fonction de nettoyage s'impose ... (Split() nécessite Access 2000)

    du genre :

    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
    Function CleanUp(ByVal str As String) As String
     
    Dim tmp() As String
    Dim i As Integer
     
     
    tmp = Split(str)
    CleanUp = vbNullString
     
    For i = 0 To UBound(tmp)
     Select Case tmp(i)
      Case "MME", "MR", "MELLE"
     
      Case Else
        CleanUp = CleanUp & " " & tmp(i)
     
     End Select
    Next i
     
    CleanUp = Trim$(CleanUp)
     
    End Function

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Salut,

    tu veux simplement supprimer le début ? si c'est le cas v'là une p'tite fonction qui va bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Function SuppDebut(exp As String)
     
    Dim resultat As String
     
    recup = Split(exp, " ")
    resultat = Right(exp, (Len(exp)) - Len(recup(0)))
     
    SuppDebut = Trim(resultat)
     
    End Function
    et voilà ....

    @+

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

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

    Ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Nom = Mid(Nom, InStr(Nom, " ") + 1)

  5. #5
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Merci de vos réponses!
    Enfait je suis sous Access 2003,
    Mais la base ou risque de ce trouver les boublons est sous 97 !
    Déja c'est le souck !!
    Est-ce que
    cafeine a dit :
    une fonction de nettoyage s'impose ... (Split() nécessite Access 2000)
    la fonction Split marche sous 2003????
    En plus, au niveau VBA.... je suis plutot boulet !!!!
    Si j'utilise...;:
    goethe-home a dit :
    Public Function SuppDebut(exp As String)

    Dim resultat As String

    recup = Split(exp, " ")
    resultat = Right(exp, (Len(exp)) - Len(recup(0)))

    SuppDebut = Trim(resultat)

    End Function
    ou
    pc75 a dit :
    Nom = Mid(Nom, InStr(Nom, " ") + 1)
    comment ces codes vont ou comment l'adapter pour que je ne supprime que les caractères qui sont AVANT le 1er espace et l'espace lui même ????
    Et ça ce met ou ???
    Escuse moi mais la pour une first sur cette fonction j'aimerai etre un peu aiguillé...
    Merci d'avance

  6. #6
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Milles excuses pour le Up, mais vraiment je galère grave !
    En fait, comme je n'arrive pas a mettre en place l'un de ces codes , j'ai fini par passé par la fonction "rechercher-->Remplacer" avec un bouton et cela fonctionne mais c'est ... chiant , car il reste toujours un espace devant le nom
    Au lieu de
    Mr_Dupont
    J'ai
    _Dupont
    Mais malheureusement, la fonction "rechercher-->Remplacer" ne marche pas pour un espace !
    Et en plus c'est galère car j'ai des M, Mr, Mme, MM, Melle, etc... a virer et je doit repeter l'opération autant de fois...
    Et après dans le même style j'ai le num de tel a modifier de +33 (2) en 02 ou +33 (3) en 03, etc...
    Y a surement un moyen d'automatiser tout ça mais je ne sais plus a force..
    Je sais en plus que la soluce est surement au dessus, mais là ....
    Là c'est un gros SOS
    Merci d'avance

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    edition remplacer espace (alt032) fonctionne parfaitement
    il faut choisir l'option
    début de champ ou n'importe où

  8. #8
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Salut

    Pour supprimer dans une chaîne de car. le premier espace et les caractères qui sont devant, l'expression de pc75 me semble la plus efficace.
    Pour l'employer pour 'nettoyer' le champ 'Chu' de la table 'Table', tu rédiges en VBA, et tu exécutes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "UPDATE [table] SET Chu = Mid(Chu,InStr(Chu," ")+1)"
    A peu de chose près...
    Cordialement,
    pgz

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Salut,

    Table1: c'est ta table
    Champ1: Le champ contenant les noms: Mr Durand, Mme Dupont etc..

    La fonction qui agit sur le champ contenant les noms:

    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
    Function CleanUp(Chp)
     
       If InStr(Chp, " ") <> 0 Then
     
          If Left(Chp, InStr(Chp, " ") - 1) = "MR" Or _
               Left(Chp, InStr(Chp, " ") - 1) = "MME" Or _
                 Left(Chp, InStr(Chp, " ") - 1) = "MELLE" Then
     
          CleanUp = Mid(Chp, InStr(Chp, " ") + 1)
          Else
          CleanUp = Chp
          End If
     
       Else
       CleanUp = Chp
       End If
     
    End Function
    et la fonction qui met à jour toute ta table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function CleanTable()
    CurrentDb.Execute "UPDATE [table1] SET Champ1 = CleanUp(Champ1)"
     
    End Function
    Que tu exécute par ex dans la fenêtre d'exécution:
    Ou sur le click d'1 bouton de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command1_Click()
    CurrentDb.Execute "UPDATE [table1] SET Champ1 = CleanUp(Champ1)"
    End Sub
    Ca résoud les problème avec les noms composé du style:
    Le Guigou

    Mais il y a certainement d'autre cas à controler

    Donc fais 1 save de ta table avant !!!


    @+

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/10/2006, 10h14
  2. enregistrer une valeur > 250 caractère dans un champ
    Par zidenne dans le forum Administration
    Réponses: 4
    Dernier message: 04/09/2006, 10h42
  3. Remplacer une PARTIE de chaine de caractères dans un champ
    Par Turlututuchapopointu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/08/2005, 11h57
  4. Selection des x premiers caractères dans un champ précis
    Par Schulman dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2005, 09h23
  5. Connaitre le nombre de caractère ";" dans un champ
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/11/2004, 17h36

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