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 :

Remplacer mot par son abréviation dans plusieurs champs d'une adresse postale [AC-2010]


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Remplacer mot par son abréviation dans plusieurs champs d'une adresse postale
    Bonjour,

    J'ai dans une table plusieurs champs : N° de voie / nom de voie / type de voie / etc, qui constituent une adresse postale.
    Avant de les concaténer, je souhaite les abréger afin de réduire le nombre de caractères.
    Lorsque le champ contient un seul mot j'y arrive par une requête de mise à jour qui, à partir d'une table d'abréviations, remplace le mot ROUTE par RTE ; AVENUE par AV ; etc.
    Par contre quand les adresses sont mal renseignées (déjà concaténées dans un seul champ), je n'arrive pas à faire ces remplacements, ex : comment remplacer 10 CHEMIN DE L EGLISE par 10 CHE DE L EGLISE ; 10 ROUTE DE LA GARE par 10 RTE DE LA GARE ... ? toujours à partir de la table d'abréviation

    J'ai trouvé sur un forum le module RemplaceBis, ci-dessous, qui permet de remplacer un mot par un autre dans une chaine de caractères mais je dois alors créer autant de requêtes de mise à jour qu'il y a d'abréviations (une 100aine).

    Il y peut-être un moyen de "combiner" le module RemplaceBis avec une requête de mise à jour ? après pas mal d'essais je bloque totalement ... merci de votre aide


    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
    Public Function RemplaceBis(strTexte As String, strRech As String, strRempl As String) As String
        ' déclaration des variables
        Dim tabSplit() As String
        Dim i As Integer
        ' éclatage de la chaine
        tabSplit = Split(strTexte, " ")
        ' parcours de la chaine et remplacement
        For i = 0 To UBound(tabSplit())
            If tabSplit(i) = strRech Then
                tabSplit(i) = strRempl
            End If
        Next i
        ' reconstruction de la chaine
        RemplaceBis = Join(tabSplit(), " ")
    End Function

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour et bienvenue parmi nous,

    Je verrais plutôt une fonction qui prendrait comme paramètre le texte concaténé et qui après une série de Replace(), restituerait le texte abrégé.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci de votre message,
    Ne parvenant pas à une autre solution j'ai commencé par faire des RemplaceBis() sur les 2 champs concaténés obtenus, ça fait beaucoup de requêtes pour traiter les multiples abréviations, j'aurais souhaité trouver un peu plus simple.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Mais tu n'as pas besoin de requête !

    Simplement ceci, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Compare Database
    Option Explicit
     
     
    Public Function Abrege(TexteLong As String) As String
      Abrege = Replace(TexteLong, " route ", " rte ")
      Abrege = Replace(Abrege, " chemin ", " ch. ")
      Abrege = Replace(Abrege, " avenue ", " av. ")
     
    End Function
    qui donne ceci comme résultat :

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ca marche !! encore merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Compare Database
     
    Option Explicit
     
    Public Function Abrege(TexteLong As String) As String
        Abrege = RemplaceBis(TexteLong, "ROUTE", "RTE")
        Abrege = RemplaceBis(Abrege, "CHEMIN", "CHE")
        Abrege = RemplaceBis(Abrege, "AVENUE", "AV")
        Abrege = Replace(Abrege, "ZONE INDUSTRIELLE", "ZI")
        Abrege = RemplaceBis(Abrege, "PLACE", "PL")
        Abrege = RemplaceBis(Abrege, "BOULEVARD", "BD")
        Abrege = RemplaceBis(Abrege, "IMPASSE", "IMP")
     
    End Function

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Mais pourquoi RemplaceBis et non simplement Remplace ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    j'ai dans le fichier des adresses pour lesquelles replace ne fonctionne pas, notamment lorsqu’il n’y a pas de N° de voie et que le type de voie n’est pas précédé d’un ESPACE
    si j'enlève les ESPACES je risque de remplacer des fins de mots

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Remarque que dans ma proposition, le mot à abréger et sa correspondance étaient encadrés d'espaces.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

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

Discussions similaires

  1. Remplacer {mot} par autre chose dans un string
    Par rXpCH dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2011, 13h06
  2. Remplacer les . par des 0 dans l'ensemble d'une table
    Par gwirionez dans le forum SAS Base
    Réponses: 3
    Dernier message: 19/07/2010, 13h56
  3. Réponses: 9
    Dernier message: 28/08/2007, 10h38
  4. [SQL Server] rechercher dans plusieurs champs d'une table
    Par houla! dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/08/2006, 09h37
  5. Remplacer un mot par un autre dans un fichier
    Par vbcasimir dans le forum Linux
    Réponses: 8
    Dernier message: 25/04/2006, 12h08

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