Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Extraction de données texte dans une cellule

DCA

XLDnaute Nouveau
Bonjour,
Avant toute chose, je me permets de préciser que je suis un illettré des formules et un analphabète des macros...

Voilà mon problème, je souhaiterais extraire une information texte d'une cellule. Il s'agit d'un nom d'espèce contenu dans une cellule où figure toute la classification d'un spécimen (ici des oiseaux). Chaque niveau est indiqué après un saut de ligne.

Pour résumer je souhaiterais pouvoir récupérer le texte situé après le 8ème saut de ligne, après "Espèce : " et avant " ; passé...".

J'ai bien tenté grâce à une formule trouvée sur le forum, mais d'après ce que j'ai compris elle vise des caractères situés après et avant un certains nombre d'autres caractères, hors ce nombre varie et manque parfois sa cible :

=STXT(A2;CHERCHE(CAR(10);A2)+155;CHERCHE(CAR(10);A2;CHERCHE(CAR(10);A2)+155)-CHERCHE(CAR(10);A2)-162)

Je vous remercie par avance pour votre aide!
Bonne journée
DCA
 

Pièces jointes

  • TEST_INVENTAIRE_extraction espèce 2.xls
    679 KB · Affichages: 29

Yurperqod

XLDnaute Occasionnel
Bonjour à tous

Tu peux aussi utiliser Données | Convertir
Sélectionner la colonne A
Choisir (x)Autre dans Séparateurs
et mettre : ALT+010 comme séparateur

Ca mettra tes données dans les colonnes à côté de la colonne A
 

Brice G

XLDnaute Occasionnel
Bonjour, je trouvais plus facile de traiter ces données à l'avance. Ayant cependant à l'esprit que vous nous avez sans doute donné une petite partie de votre base de données, je vous explique ma démarche par étape (je vois que je commence comme Yurperqod le propose, bonne nouvelle ).

1) : Procédez comme expliqué ici : http://monsieur-excel.blogspot.fr/2009/02/conversion-partir-de-sauts-de-ligne.html pour convertir votre cellule contenant toutes les infos en plusieurs cellules (on va utiliser "convertir" d'Excel, qui fractionne une colonne de texte en plusieurs) ;

2) : Enlevez, pour chaque colonne, les "phylum : " ; "Famille : " ... dans chacune de vos cellules, comme suit si vous ne savez pas : vous sélectionnez la colonne correspondante, vous faites Ctrl F, vous recherchez tous les "famille : " (attention aux espaces, avant et après) et vous remplacez tout par rien ; l'objectif est d'avoir dans chaque cellule seulement l'info.

3) : Insérer un tableau et nommez les colonnes comme il se doit (Phylum, Famille...merci pour le petit cours de bio au passage ). Pas que ce soit forcément plus clair, mais le tableau sera plus dans l'esprit d'Excel et facilitera tout traitement ultérieur.

Vous avez ainsi accès à toutes les données beaucoup plus facilement.


PS : Vous remarquerez que pour les deux dernières colonnes, tout ne se passe pas très bien, avant d'y passer du temps, vous me direz si cela vous gène.

Voilà le fichier que j'ai traité, vous me dites ce que vous en pensez. J'ai fait cela avec Excel 2016, cela va simplement, a priori, modifier le style du tableau rien de gênant je pense.
 

Pièces jointes

  • TEST_INVENTAIRE_extraction espèce 2.xls
    606.5 KB · Affichages: 24

zebanx

XLDnaute Accro
Bonjour,

Une autre solution grace à un UDF fourni par EXCEL-MALIN, bien pratique mais qui oblige à l'usage d'une dernière colonne (parce que les termes "; passé" ne sont pas présents partout).

Mais ce qu'indique BRICEG est super!

cdlt
thierry
 

Pièces jointes

  • extraire texte .xls
    705.5 KB · Affichages: 28

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour DCA, Yuperqod, Brice G,

Bon j'ai eu une coupure internet mais comme je l'ai fait je le poste même en retard

Cordialement

EDIT : Bonjour zebanx
 

Pièces jointes

  • TEST_INVENTAIRE_extraction espèce 2.xls
    682.5 KB · Affichages: 28

Brice G

XLDnaute Occasionnel
Merci.
C'est génial ce truc aussi.

L'auteur a donc trois solutions, différentes, toutes fonctionnelles, à lui de voir.
 

DCA

XLDnaute Nouveau
Bonjour à tous,
@Yurperqod, @Brice G, @zebanx, @Jocelyn, merci à tous pour vos réponses, je me rends compte de toutes les possibilités qui s'offrent à moi.

@Brice G, pour répondre à ton questionnement de départ, je travaille sur des exports de base de données (ici plus de 17000 lignes). Les éditeurs de gestionnaires de base de donnée ne nous permettent pas d'effectuer de statistiques, c'est tout juste si l'export sous tableur est possible avec des petites contrariétés à l'arrivée comme sortir uniquement l'espèce...

@Yurperqod, merci j'ai modestement réfléchi de mon côté à partir de ta solutionCe lien n'existe plusJ'ai ensuite utilisé =SUBSTITUE(A3;"Espèce : ";"") pour supprimer "Espèce" et dans une seconde colonne la même formule pour supprimer "passé", c'est vrai c'est parfois autre chose comme "sexe" à la fin, mais ça me convenait. A quelques chose près j'ai le même résultat qu'avec ta solution @Jocelyn.
Ce lien n'existe plus
Celle qui me séduit le plus c'est celle de Thierry, car on ne passe pas par une conversion de données mais je ne comprends pas, lorsque je la copie/colle, les formules j'ai une erreur #NOM? en E2/F2? J'ai beau cherché je ne trouve pas pourquoi cela bug...?
 

zebanx

XLDnaute Accro
@DCA

La fonction est dans un module !

Donc il faut que tu copies le module (module 1_extraction) dans ton fichier ou que tu copie le code ci-après dans ton fichier.

Si tu n'as pas l'habitude : depuis ton fichier, taper ALT + F11 puis insertion module et tu copies le code.
Après tu te mets sur la première cellule ou tu avais la formule, tu te places en fin de cellule et tu tapes entrée.
Ca doit fonctionner.

++

-----
Le code:
Public Function ExtraireDF(ChaineSource As String, Optional LimiteAvant As String = "", Optional LimiteApres As String = "")
'par: Excel-Malin.com ( http://excel-malin.com )
On Error GoTo FunctionErreur
If InStr(1, ChaineSource, LimiteAvant) = 0 Then
ExtraireDF = CVErr(xlErrNA)
Exit Function
Else
ExtraitPositionDebut = InStr(1, ChaineSource, LimiteAvant) + Len(LimiteAvant)
End If
If LimiteApres = "" Then
ExtraitPositionFin = Len(ChaineSource)
Else
ExtraitPositionFin = InStr(1, ChaineSource, LimiteApres) - 1
End If
ExtraireDF = Mid(ChaineSource, ExtraitPositionDebut, ExtraitPositionFin - ExtraitPositionDebut + 1)
Exit Function
FunctionErreur:
ExtraireDF = CVErr(xlErrNA)
'ExtraireChaineDelimitee = ""
End Function
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…