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

POWER Discussion :

Table.ReplaceValue + Text.RemoveRange pour plusieurs colonnes


Sujet :

POWER

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut Table.ReplaceValue + Text.RemoveRange pour plusieurs colonnes
    Bonjour,

    Les colonnes {Name, Volume(24h), Cirulation Supply} se terminent par un acronyme que je voudrai supprimer dans une seule opération et non pas en 3 qui s'enchainent

    Serait-il possible de modifier ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    = Table.ReplaceValue(#"Add col Nom",
    each [Name],
    each Text.RemoveRange([Name],Text.Length([Name])-Text.Length([Acronyme]), Text.Length([Acronyme])),
    Replacer.ReplaceText,
    {"Name"}
    )

    Nom : replace+remove.JPG
Affichages : 157
Taille : 140,3 Ko

    Merci par avance

  2. #2
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 276
    Par défaut
    Bonjour

    en remarquant que vous voulez récupérer le texte avant l'espace, sélectionnez les 3 colonnes puis menu transformer, extraire, texte avant le délimiteur

    cela donne un code du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    = Table.TransformColumns(Source, 
    {{"Name", each Text.BeforeDelimiter(_, " "), type text}, 
     {"Volume(24h)", each Text.BeforeDelimiter(_, " "), type text}, 
     {"Cirulation Supply", each Text.BeforeDelimiter(_, " "), type text}})
    code plus court avec un Table.ReplaceValue (mais peut être pas plus rapide) ici le x désigne les 3 champs les uns après les autres, y et z étant null car ils ne servent à rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Table.ReplaceValue(Source, null, null, (x,y,z) => Text.BeforeDelimiter(x," "),{"Name", "Volume(24h)", "Cirulation Supply"})
    ou avec votre idée de Text.RemoveRange
    ici le y désigne la longueur de l'acronyme.
    notez que dans votre solution, vous conservez un espace à la fin de chaque valeur (j'ajoute un -1 à la position et un + 1 à la longueur à supprimer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Table.ReplaceValue(Source, each Text.Length([Acronyme]), null, (x,y,z) => Text.RemoveRange(x,Text.Length(x)-y-1,y+1),{"Name", "Volume(24h)", "Cirulation Supply"})
    je pense qu'un Text.Start est plus naturel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Table.ReplaceValue(Source,each Text.Length([Acronyme]),null, (x,y,z) => Text.Start(x,Text.Length(x)-y-1),{"Name", "Volume(24h)", "Cirulation Supply"})
    Stéphane

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Bonjour Stéphane,


    Merci pour les solutions apportées avec leurs explications
    Merci également pour l'astuce permettant d'avoir le code qui s'applique à plusieurs colonnes. C'est vraiment 👍

    J'en profite pour savoir s'il est possible de créer une fonction personnalisée (let... in... Je présume ) appelée avec en paramètre les noms des colonnes ?

  4. #4
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 276
    Par défaut
    Citation Envoyé par informer Voir le message
    J'en profite pour savoir s'il est possible de créer une fonction personnalisée (let... in... Je présume ) appelée avec en paramètre les noms des colonnes ?
    Merci du retour

    On peut créer une fonction personnalisée mais je ne comprends pas l'objectif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (une_table as table, une_liste_de_colonnes as list) as table => Table.ReplaceValue(une_table , null, null, (x,y,z) => Text.BeforeDelimiter(x," "), une_liste_de_colonnes )
    Stéphane

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Bonjour Stéphane,


    Merci encore pour votre aide et ma dernière demande était purement théorique pour information.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/01/2023, 15h53
  2. [XL-2010] Appliquer la macro pour plusieurs colonnes (boucles)
    Par Taktser dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/03/2019, 23h05
  3. [XL-2007] code a modifier pour plusieurs colonnes
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/01/2012, 17h53
  4. [Requête] Conditions différentes pour plusieurs colonnes
    Par NiKoTiNe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 15/05/2007, 10h30
  5. Text.Pos pour plusieurs positions successives
    Par nbutin dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/09/2006, 17h30

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