Générateur de formules pour les extractions de données

Bonjour à tous,

Je développe actuellement un nouvel utilitaire pour le site, un générateur de formules pour les extractions

Pour mieux comprendre l'idée, voici un exemple simple


Vous avez une colonne de données contenant des numéros de référence dont voici un extrait :

A-31-D
B-42-B
C-55-D
D-21-W

Et vous voulez par exemple connaître la formule pour extraire les chiffres au milieu ...

Dans ce cas, copiez-collez simplement les cellules (en une fois) dans l'utilitaire :

outil extractions

Renseignez 2 champs avec les résultats attendus (ici, les chiffres) :

outil extractions donnees formule stxt

La formule sera ensuite affichée immédiatement et la colonne de droite complétée pour en avoir un aperçu (pour autant bien sûr que l'algorithme ait trouvé une solution au problème).


Pour le moment, l'outil est capable de proposer des formules pour une première série de cas ...

Par exemple, des formules simples avec GAUCHE ou DROITE :

outil extractions donnees formule gauche

Il gère aussi quelques premiers cas un peu plus complexes (comme ici en récupérant les données moins 2 caractères de chaque côté à l'aide de la fonction REGEXREPLACE) :

outil extractions donnees formule regexreplace

Ou encore quelques cas particuliers comme l'extraction de tous les chiffres :

outil extractions donnees formule chiffres

L'outil ne peut pas encore être testé, je dois encore ajouter un certain nombre de "cas" avant de le proposer sur le site ...

Mais en attendant, votre avis est le bienvenu

Si vous pouvez copier-coller quelques cellules et entrer 2 valeurs pour (peut-être) obtenir sans efforts la formule d'extraction, pensez-vous l'utiliser ?


EDIT : l'outil est en ligne (avec un exemple d'utilisation)

Version pour Google Sheets :
https://www.sheets-pratique.com/fr/utilitaires/formule-extraction

Version pour Excel :
https://www.excel-pratique.com/fr/utilitaires/formule-extraction

Bonjour Sébastien,

A-31-D
B-42-B
C-55-D
D-21-W

Et vous voulez par exemple connaître la formule pour extraire les chiffres au milieu ...

Dans ce cas, copiez-collez simplement les cellules dans l'utilitaire :

Renseignez 2 champs avec les résultats attendus (ici, les chiffres) :

outil extractions donnees formule stxt

Il gère aussi quelques premiers cas un peu plus complexes (comme ici en récupérant les données moins 2 caractères de chaque côté à l'aide de la fonction REGEXREPLACE) :

outil extractions donnees formule regexreplace

Mais en attendant, votre avis est le bienvenu

Alors là, c'est un niveau assez élevé ! et certainement très utile en effet !

  1. J'aime beaucoup l'aide sur les regex, d'autant que c'est une fonction souvent "mal aimée" ici, un peu trop souvent oubliée (en excel surtout).
  2. Autre registre, je serais particulièrement friand d'explication sur les XPath, mais je peux m'en occuper d'ici un temps qui reste à déterminer car ce n'est pas très simple et pas encore suffisamment clair pour moi !
  3. Et j'apprécie beaucoup ton chapitre sur query qui arrive en tête des recherches sur google et que j'utilise !

Dans le premier cas cité, on pourrait aussi faire

={"nb";query(arrayformula(split(A2:A5;"-"));"select Col2")}

avec une seule formule en-tête de colonne, ce que j'apprécie particulièrement dans GS

de quoi s'entraîner car cela peut être utile comme ici https://forum.excel-pratique.com/excel/importation-donnees-geny-courses-150151#p929997

Une formule comme cela, Tulipe devrait aimer ...

Autre registre, je serais particulièrement friand d'explication sur les XPath

Je ne vais pas pouvoir t'aider pour ça, tu connais bien mieux ce sujet que moi

Et j'apprécie beaucoup ton chapitre sur query qui arrive en tête des recherches sur google et que j'utilise

Dans le premier cas cité, on pourrait aussi faire

={"nb";query(arrayformula(split(A2:A5;"-"));"select Col2")}

On peut aussi juste ajouter ARRAYFORMULA à la formule :

=ARRAYFORMULA(STXT(A1:A4;3;2))

L'outil gère maintenant un nouveau cas supplémentaire, l'extraction en fonction d'un séparateur (ici le 3e groupe) :

outil extractions donnees formule google sheets

Et en plus, ce sera aussi utilisable avec Excel + les fonctions REGEX du pack

outil extractions donnees formule excel

Ou encore plus tordu, l'extraction de l'avant-avant-dernier groupe de données d'une chaîne de caractères (avec un séparateur qui peut ici se répéter) :

outil extractions donnees separateur google sheets

Autrement dit, la plupart des tests sont effectués par la gauche puis par la droite (et dans ce cas, seule la recherche par la droite donne un résultat).


Vous verrez, c'est magique

Un copier-coller + 2 champs complétés et la formule apparaît toute seule

Le dernier ajout est probablement le plus intéressant et le plus complexe, celui de la reconnaissance de motifs

Dans cet exemple-ci, l'algorithme arrive à trouver un motif qui permet d'extraire l'âge :

outil extractions donnees regexextract google sheets

Un autre motif plus complexe que le précédent trouvé par l'algorithme en 0.045 secondes :

fonction regexextract google sheets

Je mettrai l'utilitaire en ligne prochainement ...

Nouveau : l'outil propose également la formule avec ARRAYFORMULA

outil extractions donnees formule regexextract arrayformula

L'outil sera bientôt en ligne

L'outil est en ligne (avec un exemple d'utilisation)

Version pour Google Sheets :
https://www.sheets-pratique.com/fr/utilitaires/formule-extraction

Version pour Excel :
https://www.excel-pratique.com/fr/utilitaires/formule-extraction

Bonjour,

WoW du bon travail et c’est vraiment très utile, merci.

j’aurais une question si vous avez la réponse : je travaille avec des données téléchargées sous forme de tableau croisés (CSV), mais souvent pour les chiffres il y a un espace entre les milliers et du coup excel ne le considère pas comme nombre, j’ai essayé des fonctions comme trim ou supprespace mais rien ne change, j’ai fini de créer une autre table avec des lignes fonction ou je dois à chaque fois copier / coller et recopier : =IF(B2<4;A2;IF(B2=5;LEFT(A2;1)&RIGHT(A2;3))),

Auriez-vous une solution rapide en une étape ?,

L’exemple des données est dans la colonne À, j’ai un Excel 365 Eng mais je peux traduire les fonctions.

Merci d’avance.

15numbers.xlsx (14.83 Ko)

Bonjour,

le problème est que le "blanc" n'est pas un espace (ascii 32) mais un blanc insécable (ascii 160)

=SUBSTITUE(A2;CAR(160);"")*1

fonctionne très bien !

Bonjour Sébastien,

waoh quel outil génial ! Je l'utilise régulièrement, alors merci.

Mais aujourd'hui, la formule REGEX formulée ne fonctionne pas. Peux-tu m'aider stp ?

1- J'utilise GoogleSheet

2- Mes cellules contiennent beaucoup de textes (issues d'un formulaire)

Exemple :

"answer":"Conseils et mise en relation","position":2,"question":"Précisez votre projet et attente"
"answer":"je suis là","position":2,"question":"Précisez votre projet et attente"
"answer":"ici","position":2,"question":"Précisez votre projet et attente"

Mon besoin : extraire les valeurs suivantes

Conseils et mise en relation
je suis là
ici

3- L'outil me donne deux formules mais Google Sheet ne les apprécie pas (problème de parenthèse... dûes selon moi à l'interprétation des guillements).

=REGEXEXTRACT(A1;"(?:([^"]*)"?){4}")

Ou sa version avec ARRAYFORMULA :

=ARRAYFORMULA(REGEXEXTRACT(A1:A3;"(?:([^"]*)"?){4}")

Peux tu m'aider s'il te plait ?
Merci bien

Bonjour,

Content de voir que certains l'utilisent

Essaie :

=REGEXEXTRACT(A1;"answer"":""([^""]*)")

Cordialement,

Bonjour Sébastien,

Bravo pour cet outil c'est très pratique, un grand merci pour ça. Cependant j'ai un petit souci et si tu as une solution je suis preneur.

J'utilise GoogleSheet ou j'ai des longues chaines de caractère (extraites en JSON d'un site Web) et bien sur je dois extraire des données mais l'outil cale sur mes data. Certains caractères ont été remplacés comme le é qui en Javascript donne \u00e9.

Exemple j'ai en E5:

[{"majorDimension":"ROWS","range":"Fiche_CSV!A1:B500","values":[["Derni\u00e8re mise \u00e0 jour","23\/12\/2020"],[],["Nombre d'actions \u00e0 date","168\u202f427\u202f000 "],[],["Qualit\u00e9 de la valeur","3"],[],[],["PER moyen historique","14 "],["RNPG retrait\u00e9 courant estim\u00e9","4,15 "],[],["Rentabilit\u00e9 structurelle des capitaux propres","11,0%"],[],["Objectif de cours 5 ans","86 "],["Dividende 4A","3,71 "],["Objectif de cours dividende inclu 5 ans","103 "],["Objectif de cours 10 ans","113 "],["Dividende 9A","4,85 "],["Objectif de cours dividende inclu 10 ans","151 "],[],["R\u00e9silience","56%"],[],["Dernier dividende annonc\u00e9 par la soci\u00e9t\u00e9","2,50"]]}]

Pour récupérer le 3 de "qualité de la valeur" j'utilise =REGEXEXTRACT($E5;"valeur"",""([^""]*)")

le problème c'est que Google Sheet ne reconnais pas \u00e9t ou \u00e9 et s'il n'y a pas une petite chaine de caractère standard avant la variable à récupérer ça coince, je n'arrive pas à trouver l'expression régulière me permettant de récupérer le 2,50 dans "Dernier dividende annonc\u00e9 par la soci\u00e9t\u00e9","2,50"

Une idée ?

Merci !

Bonjour,

le problème c'est que Google Sheet ne reconnais pas \u00e9t ou \u00e9 et s'il n'y a pas une petite chaine de caractère standard avant la variable à récupérer ça coince, je n'arrive pas à trouver l'expression régulière me permettant de récupérer le 2,50 dans "Dernier dividende annonc\u00e9 par la soci\u00e9t\u00e9","2,50"

Une idée ?

Pour 2,50 (par rapport à l'exemple en E5) :

=REGEXEXTRACT(E5;"([^""]*)""\]\]}\]$")

Cordialement,

Ca fonctionne bien, Bravo ! mais tant que l'on reste en dessous du millier , pas si on a un espace qui vient séparer les milliers (a priori \u202f représente un caractère insécable), exemple :

["Dernier dividende annonc\u00e9 par la soci\u00e9t\u00e9","1\u202f444,00"]

dans ce cas =REGEXEXTRACT(E5;"([^""]*)""\]\]}\]$") me donne toute la chaine 1\u202f444,00 mais je ne souhaite que 1444,00

J'ai d'ailleurs le même problème pour mes autres formules :

pour ["Dividende 4A","3,71 "] la formule =REGEXEXTRACT($E5;"Dividende 4A"",""([^""]*)") fonctionne bien pour trouver 3,71 mais pas si on a

["Dividende 4A","1\u202f302,84 "] ou je veux juste récupérer 1302,84, existe-t-il une solution ?

Pour info, l'outil avait aussi calé sur ça :

["Derni\u00e8re mise \u00e0 jour","23\/12\/2020"] ou le résultat souhaité est 23/12/2020

Là aussi si vous avez une solution je suis preneur

Merci !

Tu peux utiliser la fonction SUBSTITUE pour retirer les "\u202f" des nombres extraits (idem pour retirer les "\" des dates extraites).

Merci du conseil, grâce SUBSTITUE j'ai pu nettoyer la longue chaine en amont avant tous mes REGEXEXTRACT

Rechercher des sujets similaires à "generateur formules extractions donnees"