Power Query - traitement d'une colonne

Bonjour à tous,

Je suis complètement bloqué, j'ai testé beaucoup de chose que j'ai pu voir sur internet mais rien ne me permet d'arriver au résultat que je souhaite.

Ci-joint, le fichier exemple.

Mon problème : dans la colonne "CDT" j'ai des valeurs numériques pollué par du texte. Exemple Lot de 25, 12 tubes, 200 sacs, etc... Petit point spécifique : certains cas peuvent être compliquer à traiter, exemple : 1 boite de 12, 1 carton 10kg, ...

Ce que j'essaie de faire, c'est que le tableau Exclusion de mots contient toutes les polluants que j'essaie d'exclure de cette colonne CDT.

J'ai essayé du VBA mais trop complexe à mon sens, et sachant que je tente de développer par derrière une solution Power Query, j'aimerais essayer d'intégrer une étape pour dépolluer, tout en gardant la main sur la liste afin que je puisse au fur à mesure rajouter de nouvelles variables si besoin.

J'ai essayé via chatGPT mais beaucoup trop d'erreurs, et via les paramètres mais je n'y parviens pas.

Quelqu'un à une idée ?

Merci.

Bonjour

Pour 1 lot de X tu veux quoi ? Lot ou X ?

Bonjour,

Pour 1 lot de X, le résultat souhaité est X.

RE

Il m'en reste 10 :

X3 : on prend 3 ?

150m (ou autre longueur) : on prend quoi ? 150 ou 1 ?

1500X2 : on prend quoi 1500 ou 2 ?

Alors,

X3 on prend 3,

150m on prend 1,

1500x2 on prend 1500.

Bonjour à tous !

Une approche ?

RE

Bon en retard !

J'ai modifié et trié la liste des locutions à supprimer...

Merci pour vos réponses, effectivement j'étais loin du compte. La seule solution que j'avais trouvé n'était pas très orienté pour l'utilisateur car il devait ouvrir power query pour faire des "remplacer valeur", mais avec ça ca devrait être bon ! :)

Merci pour votre aide !

Bonjour à tous de nouveau !

Bien...

Je vous remercie de ce retour.

Bonsoir à tous de nouveau !

Pour le fun, version optimisée de ma précédente requête "Final" :

let
  Source = Excel.CurrentWorkbook(){[Name = "_prix"]}[Content],
  Traitt = Table.AddColumn(
    Source,
    "Qté",
    each
      let
        old = List.Select(
          texclusion,
          (temp) => Text.Contains([CDT], temp, Comparer.OrdinalIgnoreCase)
        ){0},
        new = try Text.Trim(Text.Replace(Text.Upper([CDT]), old, "")) otherwise [CDT]
      in
        if new = "" then 1 else new
  )
in
  Traitt

Bonjour JFL,

Pour mon savoir, j'ai essayé de reproduire la requête avec un obstacle supplémentaire (il me semble) : supprimer plusieurs mots au sein de la colonne à traiter.

J'obtiens la liste des mots à exclure mais à partir de là, je bloque... Quelle serait la manière de procéder ?

13exclusion-mot.xlsx (16.04 Ko)

Bonjour à tous !

@JB_ :

Une approche ?

let
  Source = Excel.CurrentWorkbook(){[Name = "Tableau2"]}[Content], 
  Traitt = Table.AddColumn(
    Source, 
    "Traitt", 
    each 
      let
        old = List.Select(Exclu, (x) => Text.Contains([Text], x)), 
        new = List.Accumulate(old, [Text], (s, c) => Text.Replace(s, c, ""))
      in
        Text.Trim(new)
  )
in
  Traitt

RE,

Le fameux List.Accumulate !

Merci tout pleins, c'est parfait

Rechercher des sujets similaires à "power query traitement colonne"