Extraire texte+chiffre dans une colonne

RenFongTen -  
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   -
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!

6 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    voyez cette proposition, mais je ne garantis pas le résultat dans tous les cas suivant les textes
    (par exemple elle ne fonctionne pas correctement s'il y a dans les textes avant la quantité des chiffres précédés d'un blanc ou s'il n'y a pas de blanc entre le texte et le premier chiffre de la quantité)
    https://mon-partage.fr/f/oIqMhhK6/
    revenez si ça ne convient pas
    crdlmnt

    0
    1. RenFongTen
       
      Bonjour Vaucluse,

      Votre proposition est pas mal, mais des fois l'extraction prends des chiffres qui n'ont rien à avoir avec le poids (ex : 20% de matière grasse dans un titre, 20% gratuit dans un autre) et sur la colonne de gauche le texte est tronqué de quelques lettres

      En fait j'aimerais extraire dans les cellule des données comme 20 g , 3 kg, 6 X 5 cl... Uniquement prendre un chiffre quand il est devant des unités de poids
      Je sais que je n'arriverais pas sur tout et que je devrais repasser à la main parce que ça a été tapé n'importe comment. Des fois c'est séparé par des espaces, d'autres fois non, il y a des coquilles partout ....

      Je pense que le plus simple est que je vous renvoie mon fichier avec ma liste de produits
      https://mon-partage.fr/f/c1A9rnOC/


      Merci pour votre précieuse aide
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour Renfongten, Vaucluse
    Bienvenue, renfongten, à bord du titanic!
    Ca va, Vaucluse?

    j'avais trouvé une solution par VBA mais changement ...

    questions:
    1/que fait dans ce cas (entre autres)
    TARTINABLE SAUMON 120G GUYADER
    Guyader ???
    OU
    PIMENT RGE FRAIS ANANAS 90G soleil créole
    soleil créole ???

    2/ Combien de lignes dans la réalité ?

    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Salut Michel, ça roule comme un vieux! Et toi? comme un jeune, je suppose :l-))

      sur le sujet, je pose la même question que toi, mais je te laisse faire en VBA, parce que je pense pas trouver de solution très simple pour ressortir les valeurs num avant un texte d'unité. Cela dépend du nombre de chiffres à sortir.

      si on en croit le modèle, il s'agit de diviser les textes en B pour obtenir ce qui est affiché en C et en D

      si problème avec VBA, je tenterais, mais ça risque d'être plus qu'acrobatique

      Alors à toi de jouer
      Bonne journée

      Bien cordialement
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      ben comme toi, je vieillis le plus doucettement possible...
      ci joint, le vba suivant la 1° demande: ca peut-^tre servir pour la suite mais...
      https://mon-partage.fr/f/03r4Ml9Q/
      0
    3. RenFongTen
       
      Bonjour Michel,

      Justement si il y a un nom après la mention du poids, cela correspond à la marque du produit.
      Et c'est une donnée que je dois faire afficher sur mon catalogue, d'où l'idée de mettre sur une colonne à part pour séparer les indications concernant le poids du produit.

      Dans le doc que j'ai envoyé , vous avez toutes les lignes (il y a environ 400 produits)
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bon, on va voir, mais patience, car c'est loin d'^tre évident...
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    pour Renfongten,

    Nous dire toutes les différentes unité de mesure, G, Grm, CL, L, Kg....
    0
    1. RenFongTen
       
      Bonjour Michel,

      Pas de soucis

      De ce que j'ai vu sur les descriptions des produits il faudrait isoler les unités G, GR, GRS, KG, CL, L

      Merci encore
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonsoir,

    Bon, pas mal de cas traités avec succès mais hyper-casse g.... ma tite t^te sature

    pourquoi le même article avec Plusieurs références? ?
    entre autres:
    50500000102	PIMENT RGE FRAIS ANANAS 90G soleil créole
    50500000101 PIMENT RGE FRAIS ANANAS 90G soleil créole
    50500000106 PIMENT RGE FRAIS ANANAS 90G soleil créole
    50500000100 PIMENT RGE FRAIS ANANAS 90G soleil créole
    50500000104 PIMENT RGE FRAIS ANANAS 90G soleil créole
    50500000105 PIMENT RGE FRAIS ANANAS 90G soleil créole


    a demain

    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      :-)))
      la mienne aussi
      https://mon-partage.fr/f/CzOH6VIA/
      il y a des cas qui ne sont pas traitables par exemple celui des X car ils sont à la fois dans les textes, au milieu des libellés et devant la quantité à ressortir
      il y a d'autre cas de figures, mais ils m'ont surement échappés
      principe:
      rentrer dans la colonne Liste unit les repères susceptibles de détecter la limite de sectionnement du texte, mais sans le risque de confusion avec d'autres parties du texte (problème du X, pas assez spécifié)
      et c'est pour ça par exemple que la liste compte des 0g 1g 2g Etc.. pour ne pas les confondre avec un G courant
      il est possible de rajouter des références à la place des zzzz, mais il ne doit y avoir aucune cellule vide de 1 à 100 pour ne pas casser le système

      ceci dit, j'ai fait joujou avec des formules, mais sur un nombre considérable de lignes, je crois que vous pouvez aller rendre unh grand café avec une douzaine de croissant e temps que le bouot soit fait
      c'était pour la gloire

      pour moi, c'est tout ce que je peux vous proposer

      crdlmnt
      0
    2. RenFongTen
       
      Bonjour Michel ,

      Je t'avoue que comme je ne bosse pas dans cette enseigne, je n'en sais rien. Je dois juste référencer des produits pour les afficher dans un catalogue. Tant qu'ils ont un code de référencement différent, je les gardes. Tant pis si ils sont en doublon.

      Je consciente que ma demande est pointue, et que ça ne résoudras pas tout les problèmes de cette BDD. Je veux juste gagner du temps pour bien classer ces foutus produits .
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. RenFongTen
     
    Bonjour,

    Pour info, j'ai testé avec un autre forum qui m'a donné une formule matricielle qui je trouve correspond le plus à mes problèmes (ça prend mieux les X)

    Je vous la copie

    Colonne gauche exécuter avec Ctrl+Maj+Entrée
    SIERREUR(STXT(celluleencours;1;MIN(SI(ESTNUM(1*STXT(celluleencours;LIGNE(INDIRECT("1:"&NBCAR(celluleencours)));1));LIGNE(INDIRECT("1:"&NBCAR(celluleencours)))))-2);celluleencours)

    Colonne droite exécuter avec Ctrl+Maj+Entrée
    SIERREUR(DROITE(celluleencours;NBCAR(celluleencours)-NBCAR(colonnegauche)-1);"")

    Bonne journée à vous
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    Donc, je laisse tomber ?
    0
    1. RenFongTen
       
      Bonjour Michel

      Je pense que je vais procéder autrement

      Comme mon client vient de me demander de mettre les titres en minuscule et la marque des produits en majuscule. Je vais m'inspirer de ce qu'à fait Vaucluse, c'est à dire faire un liste des marques et faire une formule conditionnelle du genre si=NB.SI(liste); récupérer marque

      Je voudrais faire trois colonnes : une avec le poids, une avec la marque, et autre qui sera le reste du texte tapée dans la cellule.
      Comme ça ça évitera d'avoir des colonnes avec "90 g soleil créole"

      J'attends qu'on me renvoie la liste entière mais pourrais tu tester cette idée ?

      Si par exemple je te donne quelques marques au hasard

      SOLEIL CREOLE
      VB REUNION
      MASCARIN
      ROYAL BOURBON
      ST ROLAN

      Merci encore, après, je ne vous embête plus, promis !
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      re,

      J'avais presque terminé (essais très longs) avec en VBA des regexp (expressions régulières) restait le problème des caractères spéciaux comme le point et l’astérisque dans des expressions de poids et tu changes encore ta demande
      Désolé
      peut-^tre à une prochaine
      0
    3. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Bonjour (et salut michel)
      moi je m'arrête à tout détecter si les valeurs sont précédées d'un blanc, mais cela ne fonctionne pas s'il y a plusieurs valeurs dans e cas dans le même texte
      à priori vous devriez a adapter la formule que vous proposez en remplaçant les info cellules par les adresse correspondante
      elle semble effectivement fonctionner, même si ce n'est pas complet
      la 1° en matricielle, mais c'est inutile pour la seconde

      crdlmnt
      0