Extraction de texte d'une partie de cellule

Nino63

XLDnaute Nouveau
Bonjour,

Je ne sais pas si c'est uniquement un problème de programmation ou s'il y a une fonction directe dans excel.

J'ai actuellement un fichier excel avec des cellules ayant des valeurs du type :" Jouets en bois1VendreViande hachée2VendrePlastique2Vendre..." de longueurs différentes.

Je souhaiterais recopier les valeurs de chaque cellule et extraire des parties pour obtenir des colonnes avec en en-tête le nom de l'article ("Jouet en bois"; "Viande Hachée"; "Plastique"...) et en dessous le chiffre correspondant ("1"; "2"; "2")

Voilà, j'espère avoir été assez clair. N'hésitez pas à poser vos questions pour que j'éclaircisse si nécessaire.
Comme vous avez pu le remarquer, mon problème est surtout d'extraire les valeurs et le mettre ailleurs; après s'il faut, je peux les mettre en forme avec un tableau croisée par exemple.

Par avance, un énorme merci.

En pièce joint voici un exemple de base et de réalisation souhaitée.
 

Pièces jointes

  • Test extraction.xls
    13.5 KB · Affichages: 208
  • Test extraction.xls
    13.5 KB · Affichages: 213
  • Test extraction.xls
    13.5 KB · Affichages: 206

Tibo

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

Bonjour,

Un début de piste :

En B2, onglet résultat, cette formule :

Code:
=SI(ESTNUM(CHERCHE(B$1;DECALER(Base!$A$1;EQUIV(Résultat!$A2;Base!$A$1:$A$50;0)-1;
1)));STXT(DECALER(Base!$A$1;EQUIV(Résultat!$A2;Base!$A$1:$A$50;0)-1;1);
CHERCHE(B$1;DECALER(Base!$A$1;EQUIV(Résultat!$A2;Base!$A$1:
$A$50;0)-1;1))+NBCAR(B$1);1)*1;"")

à recopier vers la droite et vers le bas.

Nécessite que les libellés (en ligne 1) soient strictement équivalents à ceux des différentes lignes.

D'où une correction nécessaire sur la ligne 1 : Jouets en bois

Par contre, la formule rencontre un problème avec Jouet tout seul.

Je te laisse déjà tester cette formule.

Voir pour le Jouet tout seul si c'est normal.

@+
 

abcd

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

Bonjour, salut Tibo,

Autre approche en pièce jointe.

Mêmes remarques que Tibo.
De plus, comme la fonction CHERCHE ne peut faire la différence entre "Jouets" et "Jouets en bois", il a fallut remplacer "Jouets" par "Jeu" pour obtenir le bon résultat.
On pourrait également remplacer "Jouets en bois" par "Jouets_en_bois"

Autre problème : cette formule ne fonctionne que si le nombre à extraire ne comporte qu'un chiffre (comme dans l'exemple).

Vois si cela te convient.

abcd
 

Pièces jointes

  • nino.xls
    24 KB · Affichages: 190

Nino63

XLDnaute Nouveau
Re : Extraction de texte d'une partie de cellule

Tout d'abord merci pour vos réponses rapides.

1/ Effectivement, il y avait une faute de frappe pour "Jouets en bois"

2/ Pour la subtilité de "Jouets", il doit bien y avoir un moyen de changer automatique (par une formule) avec "Si pas d'espace à droite de Jouets alors remplacer par Jeu" (ou "Jouets_en_bois par exemple) (çà ne me dérange pas dans le tableau final).

3/ S'il y a des nouveaux articles dans la base (ex : Voiture), peut-on quand même la mettre dans le tableau sans aller rajouter l'intitulé "Voiture" en en-tête manuellement?

4/Comment résoudre le problème des nombres à 2 caractères? (çà ne dépasseras pas 3 caractères dans tous les cas)?

Vous m'avez déjà bien aider, mais il me manque maintenant un peu de confort.
Par avance merci.
 

abcd

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

Re,

Question 1 : résolu

Question 2 :
Sélectionner la colonne B
Menu Insertion / Remplacer ...
Rechercher : Jouets en bois
Remplacer par : Jouets_en_bois
OK
Ne pas oublier d'apporter cette modification dans les en-têtes de colonnes.

Question 3 :
Très difficilement réalisable (je ne vois pas comment faire).
D'autant plus que s'il y a une nouvelle dénomination, il faut quand même copier la formule dans cette nouvelle colonne, donc pas très laborieux de saisir l'en-tête de colonne aussi.

Question 4 :
Comme quoi il est toujours préférable, lorsqu'on donne un exemple, d'y reprendre tous les cas de figure.
Pas facile à résoudre de façon simple (sans construire une usine à gaz).
J'y refléchis et te tient au courant.

abcd
 

Tibo

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

re,

En reprenant la formule d'abcd, une adaptation pour gérer les quantités jusqu'à 3 chiffres :

en B2 :

Code:
=SI(ESTNUM(CHERCHE(B$1;Base!$B1));SI(ESTNUM(DROITE(DROITE(STXT(Base!$B1;
CHERCHE(B$1;Base!$B1);NBCAR(B$1)+3);3))*1);DROITE(STXT(Base!$B1;
CHERCHE(B$1;Base!$B1);NBCAR(B$1)+3);3);SI(ESTNUM(GAUCHE(DROITE(STXT(
Base!$B1;CHERCHE(B$1;Base!$B1);NBCAR(B$1)+3);3);2)*1);GAUCHE(DROITE(
STXT(Base!$B1;CHERCHE(B$1;Base!$B1);NBCAR(B$1)+3);3);2);GAUCHE(DROITE(
STXT(Base!$B1;CHERCHE(B$1;Base!$B1);NBCAR(B$1)+3);3))))*1;"")

Toujours à recopier vers la droite et vers le bas.

Le point 3 n'est pas traité.

@+
 

Nino63

XLDnaute Nouveau
Re : Extraction de texte d'une partie de cellule

Encore et toujours merci.
C'est super sympa.

Effectivement, le point 3 m'intéresse d'autant que je peux aller jusque environ une vingtaine d'article différent dans 1 seule cellule; et au total environ 30 à 40 articles.
Au pire, la seule solution, sera de se taper les 40 articles à mettre dans le tableau de résultat et je serais tranquille pour la suite.

Concernant le point 2 : J'ai une erreur sur ma 1ere ligne (Magasin A)
Par contre çà marche pour "Chocolat" et Chocolat en poudre", c'est bizarre ou je suis fatigué? :confused:

Je me remet sur ce tableau et je vous tient au courant.

Je vous joint la dernière version.

Merci :)
 

Pièces jointes

  • Test extraction.xls
    41 KB · Affichages: 143
  • Test extraction.xls
    41 KB · Affichages: 165
  • Test extraction.xls
    41 KB · Affichages: 158

Tibo

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

re,

Pour gérer les produits pseudos doublons (style chocolat et chocolat en poudre), ça va pas être facile du tout.

Pour le chocolat, ça fonctionne, car chocolat est plus court que chocolat en poudre (en nombre de caractères).

La crainte que j'ai, c'est qu'on puisse avoir plusieurs niveaux de pseudos doublons. par exemple :

Jouets, puis
Jouets en bois, puis
Jouets en bois peint etc.

Avec une formule, ça se complique sérieusement.

Je vais chercher, mais sans garantie.

@+
 

Nino63

XLDnaute Nouveau
Re : Extraction de texte d'une partie de cellule

Merci pour tous ces renseignements.

Les données ont évolué, et j'ai un nouveau challenge pour Tibo, abcd ou d'autres.

Le résultat doit être le même, à savoir récupérer la partie numérique et la ranger dans un tableau.
Par contre c'est la présentation des données qui ne sont pas pareil.

Un fichier excel vaut mieux qu'un long discours alors je vous joint la trame du fichier.
Un onglet "Base" pour les données à extraire et un onglet "Résultats" pour les ranger.


Pour info :
Pour le renommage des noms avec des tirets "_" j'ai créer une petite macro.

Encore et toujours merci.

A charge de revanche (dans la limite de mes possibilités! :D)
 

Pièces jointes

  • Test Extraction2.xls
    24 KB · Affichages: 179

Nino63

XLDnaute Nouveau
Re : Extraction de texte d'une partie de cellule

Merci abcd,

C'est exactement ce qu'il me fallait. Il ne me reste plus qu'à mettre tout çà en forme.

Par contre j'ai un problème si je veux rajouter un magasin (ex : magasin D), je n'arrive pas à recopier la formule de façon correcte.
Mes résultats sont bon pour les 3ère ligne mais ensuite çà me recopie la 3ème ligne.

Lorsque je vois la formule j'ai bien fait de faire appel ici car les fonction "DROITE", "DECALER", "EQUIV"... je ne maitrise pas très bien.

C'est quoi le &"*" dans la formule?

C'est comme çà qu'on progresse.

Merci
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

Coucou le fil,

je suis un peu perplexe devant le code :
y aurait-t-il un moyen simple (= + court) de remplacer les espaces par des _ dans une liste (ou table) préétablie??? Du fait, on n'aurait qu'à agrandir la liste (je voudrais de la mousse_au_chocolat!!!) sans modifier la macro...

je rêve ou quoi??

Biz

C@thy
 
Dernière édition:

abcd

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

Re,

Dans la formule, à deux endroits, il y a : EQUIV($A2;Base2!$A$1:$C$1)-1
Le DECALER ne fonctionne que jusqu'à la colonne C, et n'ayant pas trouvé l'objet de sa recherche, renvoie la dernière valeur, donc C1.

Remplace le $C$1 par $Z$1, par exemple.
Ainsi tu auras "droit" à 26 magasins.

Pour répondre à C@thy, je n'ai pas (encore) trouvé de solution simple.
Comme les _ ne dérangent pas, même là où on n'en pas besoin, en sélectionnant la plage, par le menu Edition / Remplacer, on remplacer tous les espaces par _
Le problème est que les espaces devant les nombres sont aussi remplacés et que dès lors la formule en RESULTATS ne fonctionne plus.
J'ai néanmoins une petite idée que je vais tester, je te tiens au courant.

abcd
 

C@thy

XLDnaute Barbatruc
Re : Extraction de texte d'une partie de cellule

OK, abcd, mais c'était juste par curiosité, le code de nino63 fonctionne très bien.

Quelle idiote je suis de préférer la mousse_au chocolat aux Bagues_en_diamants!!!

Pour répondre à nino63 le & sert à concaténer 2 chaînes de cacactères
par ex : a1 = 10 a2 = 12 =a1&a2 donne 1012 alors que = A1+A2 donne 22
et * signifie tout ce qui suit a* = tout ce qui commence par a.

C@thy
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 685
Messages
2 090 938
Membres
104 703
dernier inscrit
romla937