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

Requêtes et SQL. Discussion :

Remplacer un mot entier par un autre dans une chaîne de caractères


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Remplacer un mot entier par un autre dans une chaîne de caractères
    Bonjour,

    J'ai un champ Adresse qui contient plusieurs milliers d'enregistrements parmi lesquels j'aimerais remplacer certains mots par d'autres de façon automatique. Par exemple, "Rte" par "Route", "St" par "Saint" etc...
    Le problème est qu'il faut considérer uniquement le mot et non pas la chaîne de caractères car sinon ça va pas mal chambouler mes enregistrements (au lieu de "Christophe", j'aurai "Chrisaintophe", pas terrible ! )
    Bref j'ai cherché un peu partout, j'ai trouvé des solutions uniquement pour les chaînes de caractères mais pas pour les mots entiers et ajoutons à cela que je ne suis pas experte en Access...
    Je sollicite donc votre aide en espérant que je ne sois pas passée à côté de la discussion résolvant mes "problèmes".
    D'avance merci,

    Clemini.

  2. #2
    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,

    Et en utilisant la fonction replace avec un espace avant et après ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Replace(Adresse, " st ", "Saint")

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Bonjour et merci,

    En faisant ça, ça m'en remplace certains, ceux strictement à l'intérieur de la chaîne, et cela omet donc ceux au début et ceux à la fin.
    Je pourrais faire remplacer "st " par "saint" en cochant "début de champ" dans la fonction manuelle Ctrl+H sur le champ, mais pour la fin de champ il n'y a pas d'options !
    C'est pourquoi je cherche une méthode générale.

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

    A mon avis il va falloir créer ta propre fonction de remplacement.

    Cette fonction va spliter ta chaîne (fonction Split avec l'espace comme séparateur), ce qui te permet de créer un tableau.

    Tu parcours ce tableau qui représente chaque élément de ta chaine, donc tu as une égalité à tester, et si c'est égale tu remplaces.

    Ensuite tu fais un Join pour reconstituer ta chaine, et faire le remplacement total de la valeur de ton champ.

    C'est la seule solution que je vois, et cette fonction va remplacer la fonction Replace avec deux paramètres.

    Philippe

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci en effet cela peut-être une solution à laquelle je n'avais pas pensé car mon niveau reste assez moyen ! Reste plus qu'à faire le code
    Bonne journée.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Et en imbriquant les Replace?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(Replace(Replace(Monchamp, "st ", "Saint "), " st", " Saint"), " st ", " Saint ")
    ou, directement dans le générateur de requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Remplacer(Remplacer(Remplacer([MonChamp];"st ";"Saint ");" st";" Saint");" st ";" Saint ")
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Bonjour et merci,

    Je pense que cette solution remplacera aussi les "st" à l'intérieur de mots déjà existants dans les cas "st " et " st"...

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Non, j'ai mis les trois cas...
    "st " en début de phrase, " st" en fin de phrase et " st " en milieu de phrase (avec les espaces de part et d'autres).
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Ce que je voulais dire c'est que cela remplacera bien, mais pour les cas "st " et " st" il ne s'agit pas forcément de début ou de fin de champ :
    "route STanislas"=> " st"
    ou encore
    "BeST quelquechose" => "st "... d'où mon problème avec cette solution

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Ok. Pigé. Pas de solution pour l'instant
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Invité
    Invité(e)
    Par défaut
    Re

    Une petite fonction faite vite fait

    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
    à placer dans un module, et à utiliser à la place du Replace dans ta requête.

    Je n'ai pas tout testé, mais cela devrait fonctionner.

    Philippe

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup ça marche !
    Et merci aussi à ceux qui ont pris le temps de me répondre,
    Bonne journée !

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

Discussions similaires

  1. remplacer un caractère par un autre dans une QlineEDIT
    Par philippe63000 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/06/2013, 13h18
  2. Remplacer un "film" par un autre dans une interface
    Par Mizy57 dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 08/04/2013, 16h46
  3. [AC-2010] Remplacer caractères par d'autres dans une chaîne
    Par Invité dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/05/2011, 11h03
  4. Remplacer un caractère par un autre dans une String
    Par djack44 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 12/03/2008, 15h16
  5. Réponses: 3
    Dernier message: 21/07/2007, 01h48

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