Extraire chaine caractère

Bonjour à tous,

J'aurais besoin de vous pour extraire des caractères sur une liste de match de baseball. En colonne A j'ai plusieurs infos séparées par des virgules. La 1ère partie est composée de la date (année-moi-jour) puis des 3 première lettre de l'équipe qui joue à domicile. La 2ème c'est les 3 premières lettres de l'équipe concernée par le score écrit dans la partie 4. La 3ème partie c'est le numéro de la manche disputée (allant de 1 à 9 voir plus, ce n'est pas régulier) et la 4ème le score de l'équipe concernée dans la manche citée avant. Un petit schéma pour illustré:

180510074927897897

Les premières lignes du fichier:

199004090BOS,"BOS","1","3"

199004090BOS,"BOS","2","1"

199004090BOS,"BOS","3","0"

199004090BOS,"BOS","4","0"

199004090BOS,"BOS","5","0"

199004090BOS,"BOS","6","0"

199004090BOS,"BOS","7","1"

199004090BOS,"BOS","8","0"

199004090BOS,"BOS","9",NULL

199004090BOS,"DET","1","0"

199004090BOS,"DET","2","0"

199004090BOS,"DET","3","0"

199004090BOS,"DET","4","0"

199004090BOS,"DET","5","0"

199004090BOS,"DET","6","2"

199004090BOS,"DET","7","0"

199004090BOS,"DET","8","0"

199004090BOS,"DET","9","0"

Le but est d'avoir l'équipe à domicile en colonne B et l'équipe extérieur en colonne C. Je l'ai fait à la main dans le fichier joint mais comme il y a beaucoup de lignes dans le fichier original, j'aimerai avoir un processus automatisé. Autre dernière info, ce n'est pas toujours l'équipe à domicile qui est en premier. C'est à dire que dans le cas écrit ci-dessus, les lignes BOS-DET (199004090BOS,"DET","1","0") aurait pu être écrite avant les BOS-BOS.

Merci beaucoup !

Si ce n'est pas clair, n'hésitez pas à me poser des questions !

Quik

17mlb.xlsx (10.49 Ko)

Bonjour

1ere ville

=STXT(A1;TROUVE(",";A1)+2;3)

2ème

=STXT(A1;TROUVE("@";SUBSTITUE(A1;",";"@";1))+2;3)

Bonjour

Ce que tu as fait à la main ne correspond pas aux cellules de la colonne A

Perso, je ne comprends pas ton résultat.

Cordialement

Bonjour Quik, le forum,

Je te retourne ton fichier Excel modifié :

11mlb.xlsx (11.51 Ko)

Regarde les 2 formules en B1 et C1 (déjà tirées vers le bas jusqu'en ligne 140).

Merci de me donner ton avis.


@Amadéus : effectivement, les premiers résultats du demandeur ne correspondent pas aux données ! j'ai supposé que c'est dû à une petite erreur de sa part : mauvaise synchronisation entre les deux.

@78chris : ta 1ère formule est correcte, mais je crois que le code de A1 est strictement normalisé ➯ j'ai fait une formule d'extraction plus simple, sans recherche de la virgule ; pour ta 2ème formule, j'ai pas compris où t'as vu un caractère « @ » !

dhany

Dhany, le forum bonsoir,

le "@" est cherché suite à la substitution de la "," par "@" :

=STXT(A1;TROUVE("@";SUBSTITUE(A1;",";"@";1))+2;3)

Enfin si j'ai bien compris

@ bientôt

LouReeD

Bonsoir LouReeD,

Tu as très bien compris, et tu as tout à fait raison ! c'est moi qui ai lu trop vite, et je cherchais un « @ » dans la donnée de départ ! autant pour moi ! et mes excuses à 78chris ; toutefois, comme je l'ai écrit plus haut, je crois que les données de la colonne A sont strictement normalisées (donc de même structure et longueur à chaque fois) ➯ j'ai utilisé ces 2 formules toutes simples :

En A1 : =SI(A1="";"";STXT(A1;10;3))

En B1 : =SI(A1="";"";STXT(A1;15;3))

donc ça devrait aller tel quel, sauf si j'me suis trompé et qu'les données sont pas aussi normalisées que j'le pensais.

dhany

Bonjour à tous,

Merci pour vos réponses mais elle ne réponde pas à ma question, je l'ai mal formulée. Si on reprend les premières lignes du fichier fait à la main:

199004090BOS,"BOS","1","3" BOS DET

199004090BOS,"BOS","2","1" BOS DET

199004090BOS,"BOS","3","0" BOS DET

199004090BOS,"BOS","4","0" BOS DET

199004090BOS,"BOS","5","0" BOS DET

199004090BOS,"BOS","6","0" BOS DET

199004090BOS,"BOS","7","1" BOS DET

199004090BOS,"BOS","8","0" BOS DET

199004090BOS,"BOS","9",NULL BOS DET

199004090BOS,"DET","1","0" BOS DET

199004090BOS,"DET","2","0" BOS DET

199004090BOS,"DET","3","0" BOS DET

199004090BOS,"DET","4","0" BOS DET

199004090BOS,"DET","5","0" BOS DET

199004090BOS,"DET","6","2" BOS DET

199004090BOS,"DET","7","0" BOS DET

199004090BOS,"DET","8","0" BOS DET

199004090BOS,"DET","9","0" BOS DET

Ce que je souhaite c'est que pour un texte unique, ici "199004090BOS". Le fichier détecte que le match c'est BOS VS DET et pas BOS VS BOS (une équipe ne va pas jouer contre elle-même !).

Faut qu'il détecte (dans la liste qui commence par 199004090BOS) les fois où c'est 199004090BOS,"DET",(c'est à dire, si on extrapole pour toute la liste, qu'il détecte quand est-ce que les 3 dernières lettres, ici BOS sont suivies par un nom différent de BOS, ici DET). Le match est donc BOS-DET et il écrit en face de toutes les lignes concernées (c'est à dire celles qui commencent par 199004090BOS) , l'équipe domicile dans la colonne B (ici BOS) et l'équipe extérieur dans la colonne C (ici DET).

Merci et n'hésitez pas si ce n'est toujours pas clair !

A+

Quik

Bonjour

Pour la seconde ville

=SI(STXT(A1;10;3)=STXT(A1;15;3);SI(STXT(INDEX(A:A;EQUIV(GAUCHE(A1;14)&"ZZ";A:A;1);1);15;3)=STXT(A1;10;3);STXT(INDEX(A:A;EQUIV(GAUCHE(A1;14)&"a";A:A;1)+1;1);15;3);STXT(INDEX(A:A;EQUIV(GAUCHE(A1;14)&"ZZ";A:A;1);1);15;3));STXT(A1;15;3))

Supppeeerrrr ça marche parfaitement !!!!!!!!!!!!!!

Merci beaucoup !!!

Bonne soirée !

Quik

Rechercher des sujets similaires à "extraire chaine caractere"