Découpe texte d'une cellule en plusieurs cellule

  • Initiateur de la discussion Tifred
  • Date de début
T

Tifred

Guest
Bonjour tout le monde,

Voilà mon problème:
j'aimerais découper le texte d'une cellule pour le repartir dans plusieurs cellules.
Le texte est de type NOM(en majuscule), dosage (= dose + unité) forme (comprimés, gellule, crème...)

Comment faire pour:
Prendre le nom en majuscule de la cellule pour le copier dans une autre cellule,
Prendre le dosage (qui commence par un chiffre après le nom) et le mettre dans un autres cellules
Trouvé la forme dans la cellule (texte standardisé type 'comprimé''pommade'...) et le recopier dans une dernière cellule.

En gros ça correspond a regarder la cellule comme une suite de caractères, prendre le début de la chaine de caractères qui est en majuscule et qui n'est pas en chiffre la recopier; prendre la partie après les majuscules qui est en chiffre et la recopier, rechercher les mots 'comprimé','pommade','gelule' et le recopier. Mais j'ai du mal avec la redaction VB.
 

Bricofire

XLDnaute Impliqué
Bonjour Tifred, Monique :)

Excel (au moins depuis 97) le fait presque tout seul si on fait un peu de pirouette au besoin, mais c'est béton pour les données :)

Tu sélectionnes ta cellulle à 'déconcaténer', tu va dans la barre de menus sur Données, Convertir, délimiter puis suivant... Tu regardes ce que ça fait et l'aide, tu peux choisir les séparateurs etc... et jouer sur le format des données.
Là ou intervient les pirouettes c'est que c'est un outil rapide, sûr et puissant... mais qui ne fait pas forcément exactement ce que tu veux, donc ensuite tu obtiens des colonnes avec 1 donnée par colonne, il t'es plus facile alors de supprimer les non significatives, d'en reconcaténer deux ou trois pour les besoins de la cause, d'affecter des mises en forme etc...
En travaillant à partir d'une copie de données bien sûr; tu ne risque rien ;)

Bon WE,

Brico
 

pierrejean

XLDnaute Barbatruc
bonjour tifred
salut Monique
salut Bricofire

une solution par fonctions personnalisées qui suppose
1) que les separateurs soient des espaces
2) qu'il n'y ait que 3 mots concaténés [file name=tifred.zip size=8233]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tifred.zip[/file]
 

Pièces jointes

  • tifred.zip
    8 KB · Affichages: 99
A

AV

Guest
Exemple avec les données suivantes en A1:A4
BARBE A PAPA 150 dcl fiole
LE Remède 10 plaquettes gellule
Machin 20 g pommade
Jouvence de l'abbé Souris 5 tubes crème

Pour extraire le produit
En B1 et recopie --> B4 (matricielle à valider par ctrl+maj+entrée)
=GAUCHE(A1;MIN(SI(ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))*LIGNE(INDIRECT('1:'&NBCAR(A1)))>0;ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))*LIGNE(INDIRECT('1:'&NBCAR(A1)))))-2)
Pour extraire dose + unité
En C1 et recopie --> C4 (matricielle à valider par ctrl+maj+entrée)
=STXT(A1;MIN(SI(ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))*LIGNE(INDIRECT('1:'&NBCAR(A1)))>0;ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))*LIGNE(INDIRECT('1:'&NBCAR(A1)))));MAX(SI(ESTERR(TROUVE({'comprimé';'gellule';'fiole';'crème';'pommade'};A1));'';TROUVE({'comprimé';'gellule';'fiole';'crème';'pommade'};A1)))-MIN(SI(ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))*LIGNE(INDIRECT('1:'&NBCAR(A1)))>0;ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))*LIGNE(INDIRECT('1:'&NBCAR(A1)))))-1)
Pour extraire le conditionnement (en rajouter si besoin est dans la matrice de constantes)
En D1 et recopie --> D4 (matricielle à valider par ctrl+maj+entrée)
=STXT(A1;MAX(SI(ESTERR(TROUVE({'comprimé';'gellule';'fiole';'crème';'pommade'};A1));'';TROUVE({'comprimé';'gellule';'fiole';'crème';'pommade'};A1)));9^9)

AV - MVP [Excel]
 
T

Tifred

Guest
Re:Découpe texte d'une cellule en plusieurs cellul

ok merci pour les infos...
Comme il y avait un peu plus de 17000 lignes j'ai du faire au plus simple/efficace...donc éditer ma table au format *.cvs ou *.txt dans word, en insérant de façon rusée des séparateurs par la fonction rechercher/remlacer:
ex: remplacer tout les ';' par des '/' (car ';' est le séparateur que j'ai choisi) puis remplacer toutes les ', ' (i.e. ',' + 'espace') par des ';' les virgules servaient à séparer le nom et le dosage de la forme (les ',' sans espace n'étant pas affectées (ex 'dosage à 2,25 mg' n'est pas séparér en 2)...
en rouvrant le texte sous excell est en indiquant les séparateurs, les colonnes se crées effectivement toutes seules.
Pour isoler les dosages j'ai pas encore trouvé mais c'est déjà un bon boulot...
J'ai essayé avec ta formule AV mais il m'indique une erreur sur (INDIRECT(\\'1:\\'&NBCAR(...) au début de la formule

le tout étant pour faire une table de BdD j'ai donc conservé le format *.cvs (je ne travaille pas sous access)
merci pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso