Extractions de chaîne numérique

Bonjour à tous,

J'ai plusieurs chaînes de caractères qui ne respectent pas le même schéma de construction.

La seule chose commune au sein de chaque chaîne, c'est que dans la chaîne il y a UNE et une seule sous chaîne numérique dedans.

J'aimerai extraire via PowerQuery, uniquement ce montant.

Dans mon exemple vous trouverez une requête PQ qui fonctionne pour l'extraire cependant, il y a des étapes inutiles.

Je split ma chaîne de caractère avec le séparateur " " (espace) pour obtenir toutes les occurrences. Et à partir de cette liste, je pense qu'il est possible de la filtrer directement avec uniquement les valeurs numériques.

Travaillant depuis peu avec les listes sous PowerQuery et trouvant ces dernières très importantes pour optimiser certaines requêtes, je m'adresse à vous les Exceliens pour m'aider dans cette quête

N'hésitez pas si je ne suis pas clair et un grand merci à vous d'avance !

Hello,

Une fonction qui n'est pas de moi (je n'en ai aucunement le niveau...)

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Résultat = Table.AddColumn(Source, "Personnalisé", each List.First(List.Select(Text.Split([Chaine de caractère]," "), each let x = try Int64.From(_) in if x[HasError] then false else x[Value]>0)))
in
    Résultat

From Hasco, avec ses commentaires :

Pour chaque ligne le test sélectionnera la première valeur numérique supérieure à 0 contenue dans la liste issue de l'éclatement de la chaîne de caractères.

dans x = try Int32.From(_) , try retourne un objet record qui contient un champ indiquant s'il y a une erreur ou non dans la tentative de conversion et un champ avec soit la valeur (HasError=false) ou l'erreur dite (HasError = true)

List.Select admet une fonction renvoyant true ou false pour déterminer si l'élément doit être sélectionné ou non.

Bonne journée

Hello,

Franchement la syntaxe est imbitable je vois ce qu'il a fait avec son explication et encore ... Franchement je sais pas si je saurai refaire un truc comme ça..

Edit : je vais attendre de voir si les experts autres Exceliens fan de PowerQuery n'ont pas une alternative :)

Hello CousinHub,

Si jamais tu veux te documenter je suis tomber la dessus qui permet de savoir pourquoi il y a eu une référence à x[HasError] et x[Value]. J'avais bien envie de comprendre pourquoi ça fonctionnait ainsi.

https://learn.microsoft.com/fr-fr/power-query/error-handling

@+

Bonjour @ tous,

on peut le faire par formule, en B2 :

=DANSCOL(--FRACTIONNER.TEXTE([@[Chaine de caractère]];" ");3)

Cordialement

Hello,

Bonjour le fil

Sinon, sous ce lien :

https://learn.microsoft.com/fr-fr/powerquery-m/m-spec-error-handling

Ils en parlent également.

Bonne fin d'apm

Bonsoir à tous !

Je pensais avoir posté mon approche....

Je répare cet oubli / mauvaise manipulation () :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ValNum = Table.AddColumn(
                                Source,
                                "Valeur numérique",
                                each  List.RemoveNulls(
                                                        List.Transform(
                                                                        Text.Split([Chaine de caractère]," "),
                                                                        each try Number.From(_) otherwise null
                                                                      )
                                                      )
                                {0},
                                type number
                            )
in
    ValNum

Salut à tous

Une autre proposition, formule en B2:

=SIERREUR(CNUM(GAUCHE(DROITE(A2;12);4));CNUM(GAUCHE(A2;4)))

Cdlt

Renyeu

Bonsoir à tous,

Quel engouement pour ce sujet je vous remercie tous

@Rachid et renyeu, je vous remercie pour votre aide mais l'objectif était vraiment de traiter le sujet par PowerQuery.

@CousinHub, merci pour cette documentation supplémentaire, bizarrement je prends plus plaisir en ce moment à lire ce genre de choses que de geeker c'est pas bon signe

@JFL, j'étais étonné de ne pas voir de petite participation de ta part mais c'est exactement ça. N'ayant pas encore trop eu l'occasion de travailler avec List.Transform, je dirai donc une nouvelle fonction ajoutée à mon actif

Un grand merci à tous pour votre aide !

Rechercher des sujets similaires à "extractions chaine numerique"