Extraire une combinaison de texte+chiffre dans une base de données

RenFongTen

XLDnaute Nouveau
Bonjour à tous,

Je suis nouvelle ici,

En ce moment je dois travailler sur une base de donnée très mal remplie qui me file un mal de crâne.

Je dois m'occuper d'un catalogue de supermarché , et la description des produits se fait souvent sur une ligne, ce qui ne m'arrange pas pour la mise en page. (Et comme il y a trop de produits, remettre tout en forme prendrait trop de temps)

les lignes sont du genre

DANAO PECHE 50 CL
CHAMPIGNON DE PARIS
FROMAGE PITON DES NEIGES
DANETTE FLAN VANILLE 12 X 100 G
LAIT CREME BRULEE 100G

Ce qui m'intéresserait c'est de faire deux colonnes : une à gauche avec le texte , une a droite avec le poids. Sachant que pour le poids il faudrait filtrer la cellule nombre +"g" ou nombre +"cl" ou nombre "X" nombre "g" quand il y a un lot de produits

Pensez vous que ce serait faisable vu que j'ai cru comprendre qu'on pouvait extraire du texte dans une cellule?

Merci pour votre retour!
 

CISCO

XLDnaute Barbatruc
Bonjour

Cf. en pièce jointe, avec dans A3 une formule matricielle, à valider donc avec les 3 touches Ctrl+maj+entrer et à tirer vers le bas aussi longtemps que désiré. Il faut aussi tirer vers le bas la formule dans B3.

@ plus
 

Pièces jointes

  • exempleRen.xlsx
    9.4 KB · Affichages: 47

RenFongTen

XLDnaute Nouveau
Bonjour CISCO,

C'est pas mal!

J'ai une base de données très mal écrite ou il y a des coquilles, des espaces donc je suis obligée de repasser mais c'est la meilleur formule que j'ai utilisé jusqu'à présent. Ça me fait gagner beaucoup de temps, merci beaucoup
 

CISCO

XLDnaute Barbatruc
Bonjour

Si tu nous donnes quelques exemples, dans un petit fichier en pièce jointe, représentant la plupart ou toutes les situations possibles, quelqu'un pourra peut être te proposer une formule, ou une macro, faisant ce que tu désires.

@ plus
 

RenFongTen

XLDnaute Nouveau
Bonjour,

Je vous préviens ma demande est assez compliquée

J'ai une liste de 400 produits qui ont été tapée n'importe comment (dés fois on a nom_poids_marque, nom_marque_poids, nom_marque avec évidemment des fautes de frappes, des espaces en trop etc.) et il me faudrait mettre de l'ordre dans tout ça.

Je voudrais faire 3 colonnes à partir d'une cellule

Une avec le nom du produit
Une avec la marque du produit
Une avec le poids

Pour le poids vous m'avez bien aidé parce que la formule fonctionne assez bien (sauf quand il y a une marque après le poids, c'est pour ça que je voudrais faire une colonne supplémentaire pour la marque)

Pour isoler la marque j'ai pensé faire une liste à part ou je noterais toutes les marques et renvoyer sur une formule conditionnelle du genre NB.SI(liste); afficher marque.

Ci joint un extrait des données que j'ai a traiter

Merci à vous
 

Pièces jointes

  • TEST EXTRACTION TEXTE.xlsx
    63.3 KB · Affichages: 54

CISCO

XLDnaute Barbatruc
Bonjour

...

BOUDIN NOIR PIMENT / X5 / PORCIDOU

Après ce qui m'inquiète c'est que j'ai d'autres descriptions ou on trouve par exemple PACK DE LAIT 3X50 CL et je me demande si du coup ça va marcher.

Pas évident de couper avant le X...

La formule matricielle proposée dans le post #2 cherche la position du premier chiffre, et coupe devant. Dans l'exemple BOUDIN..., je ne vois pas quel critère utiliser pour provoquer cette coupure. On peut peut être faire avec le mot PIMENT, mais cela voudrait dire que l'on connait à l'avance tous les mots pouvant servir de repère. Pas évident.

Est-ce que tu as des cas où il faut couper 2 ou 3 caractères devant le premier chiffre ?

@ plus
 

laurent950

XLDnaute Accro
Bonsoir,

Pour Cisco je pense que le X pour multiplier soit (X6 220G = Lots de 6 boites de 220G)

Pour nettoyer la base peux être une solution :
dans chaîne de caractères suivante : BOUDIN NOIR PIMENT / X5 / PORCIDOU
BOUDIN NOIR PIMENT = le nom de l'article.
et si PORCIDOU = la marque du produit
donc avec la base de donné des marques de tous les produits possibles de votre base c'est a dire (liste de 400 produits qui ont été tapés n'importes comment) ont peux identifier dans la chaîne de caractères (la marque du produit si elle à était noté) et bien sur l'extraire.

Donc par la suite il reste 2 inconnues :
le nom du produit
et
le poids donc (500G ou 90G ou X6 220G ou 1 ou 2 ou 3 ou 2X) c'est aussi ensuite possible de les isolés une fois des règles créer.
La chaîne peux être scindé en 3 partie par la suite.
Une avec le nom du produit
Une avec la marque du produit
Une avec le poids
Je pense qu'il faut utilisé les expressions régulières pour le découpage de la chaîne.

Donc si vous avez un listing de tous les marques des produits sous forme de listing excel c'est parfait.

cdt

Laurent
 

CISCO

XLDnaute Barbatruc
Bonjour

Bonsoir,

donc avec la base de donné des marques de tous les produits possibles de votre base c'est a dire (liste de 400 produits qui ont été tapés n'importes comment) ont peux identifier dans la chaîne de caractères (la marque du produit si elle à était noté) et bien sur l'extraire.

Laurent

C'est aussi ce que je pense, mais pour cela il faut établir la liste des marques...

@ plus
 

CISCO

XLDnaute Barbatruc
Bonsoir

Un autre essai en pièce jointe, qui normalement devrait fonctionner correctement pour mettre à part les quantités sous la forme nombreG, nombre G, ou Xnombre, ou X nombre lorsqu'elle est dans le texte de la colonne B.

Mais cela ne fonctionne pas à tous les coups, pas par exemple lorsque cette quantité est au début du texte, ou lorsqu'il y a un 0 (zéro) à la place d'un o (Cf. ligne 107).

@ plus
 

Pièces jointes

  • TEST EXTRACTION TEXTE.xlsx
    74 KB · Affichages: 56
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 970
Membres
103 072
dernier inscrit
Remithesix