Extraire un morceau de chaine numérique dans une celulle alphanumérique

Bonjour le forum,

Je souhaites dans une celulle alphanumérique, récupérer une partie des caractères numériques.

Dois-je passer par une formule (laquelle ?) ou par une macro ?

Je vous ai mis en pièce jointe les chaines de caractères que j'ai (en colonne A) et le résultat que je souhaite (en colonne B).

Pouvez vous me venir en aide ?

28classeur1.xlsx (8.93 Ko)

Bonjour

En B2 à recopier en dessous

=SI(ESTNUM(CHERCHE("/*bms";A2));STXT(A2;CHERCHE("µ";SUBSTITUE(A2;"/";"µ";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"/";""))))+1;CHERCHE("bms";A2)-CHERCHE("µ";SUBSTITUE(A2;"/";"µ";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"/";""))))-1);SI(ESTNUM(CHERCHE("bms";A2));GAUCHE(A2;CHERCHE("bms";A2)-1);""))

Bonjour

En B2 à recopier en dessous

=SI(ESTNUM(CHERCHE("/*bms";A2));STXT(A2;CHERCHE("µ";SUBSTITUE(A2;"/";"µ";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"/";""))))+1;CHERCHE("bms";A2)-CHERCHE("µ";SUBSTITUE(A2;"/";"µ";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"/";""))))-1);SI(ESTNUM(CHERCHE("bms";A2));GAUCHE(A2;CHERCHE("bms";A2)-1);""))

Re,

Merci, cela fonctionne parfaitement.

Y-a-t-il possibilité de connaitre la logique de formule (l'explication), pour que je puisse bien comprendre cette formule ?

RE

2 cas avec ou sans / et BMS dans la cellule

En relisant la formule je vois que je ne traite que le cas où on a /xxBMS à la fin et dans ce cas on peut simplifier la formule

=SI(ESTNUM(CHERCHE("BMS";A2));SIERREUR(STXT(A2;CHERCHE("µ";SUBSTITUE(A2;"/";"µ";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"/";""))))+1;CHERCHE("bms";A2)-CHERCHE("µ";SUBSTITUE(A2;"/";"µ";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"/";""))))-1);GAUCHE(A2;CHERCHE("BMS";A2)-1));"")

Mai si tu as de cas comme 12/258/25BMS/55 cela ne marche pas et il faut passer par VBA ou PowerQuery

Re,

Toujours dans l'optique de compréhension :

Si je souhaite faire la même chose avec /Eur ou /Palettes Eur, il faut que j'imbrique la même formule avec ces critères ?

Dans ce cas, cela cherchera BMS ou Eur ou Palettes Eur ?

RE

Si tu veux couvrir tout les cas cela va vraiment faire une formule à rallonge...

Je pense qu'une fonction personnalisée Vba ou une complément par formule nommée sera plus simple...

Mais tu n'as pas répondu concernant la position systématique en fin de chaîne ou non...

RE

Si tu veux couvrir tout les cas cela va vraiment faire une formule à rallonge...

Je pense qu'une fonction personnalisée Vba ou une complément par formule nommée sera plus simple...

Mais tu n'as pas répondu concernant la position systématique en fin de chaîne ou non...

Ouuuuppss,

Oui, j'ai le cas où le BMS ou le palettes Eur ou le Eur est sur l'avant derniere position :

par exemple 78/7801/16BMS( ou Eur ou Palettes Eur)/1601.

Est-il concevable pour vous de m'aider pour la macro, car la, je ne vois même pas par quel bout commencer et comment écrire tout cela en vba ?

RE

Avec une fonction personnalisée à mettre dans un module standard et un tableau structuré des codes Tournée à trouver.

Palettes Eur doit être avant Eur dans la liste

La fonction utilise

  • la cellule Tournée
  • Le nom du tableau de code
  • le séparateur ("/" dans ton cas)
10texte.xlsm (19.15 Ko)

RE

Avec une fonction personnalisée à mettre dans un module standard et un tableau structuré des codes Tournée à trouver.

Palettes Eur doit être avant Eur dans la liste

La fonction utilise

  • la cellule Tournée
  • Le nom du tableau de code
  • le séparateur ("/" dans ton cas)

Par-fait ! Tout juste ce qu'il me fallait Vous êtes vraiment des king !

Je passe le sujet en résolu.

Rechercher des sujets similaires à "extraire morceau chaine numerique celulle alphanumerique"