Extraction d'une chaine de caractères depuis une cellule
Résolubrucine Messages postés 21682 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche en vain, la formule qui me permettra d'extraire une chaine de caractère précise contenus dans une même cellule.
Dans l'exemple ci-dessous, je souhaite extraire la valeur 20 016. C'est à dire le 1er chiffre après le 1er espace et le dernier chiffre avant le 3ème espace.
AAA110 20 016 3KLB. 3KA 1PP
la composition des cellules se fera toujours de la même manière, avec les espaces aux mêmes endroits !
Merci d'avance pour votre aide et vos suggestions !
Cdlt, Gexelpas
Windows / Chrome 109.0.0.0
- Extraction d'une chaine de caractères depuis une cellule
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Aller à la ligne dans une cellule excel - Guide
- Bloquer une cellule excel - Guide
8 réponses
Bonjour
la composition des cellules se fera toujours de la même manière, avec les espaces aux mêmes endroits
Si 20 016 a toujours le même nombre de chiffre
=STXT(A2;8;6)
Il faut ajouter un SUBSTITUE :
=TEXTE.APRES(TEXTE.AVANT(SUBSTITUE(A1;CAR(160);" ");" ";3);" ")
=STXT(A1;TROUVE(CAR(32);SUBSTITUE(A1;CAR(160);" "))+1;TROUVE(" "; SUBSTITUE(A1;CAR(160);" ");TROUVE(" ";SUBSTITUE(A1;CAR(160);" ");TROUVE(" "; SUBSTITUE(A1;CAR(160);" ")) +1) +1)-TROUVE(" ";SUBSTITUE(A1;CAR(160);" "))-1)
Daniel
Aussi :
=TEXTE.APRES(TEXTE.AVANT(A1;{" ";" "};3);" ")
(L'un des deux " " est un espace insécable).
Daniel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
si la structure des cellules est toujours la même, tu peut utiliser une combinaison de fonctions pour extraire le nombre voulu.
=STXT(A1;CHERCHE(" ";A1)+1;CHERCHE(" ";A1;CHERCHE(" ";A1)+1)-CHERCHE(" ";A1)-1)
Ça doit surement être la meilleur façon de faire.
Ou :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE(" ";A1;TROUVE(" ";A1)+1)-TROUVE(" ";A1)-1)
Cdlt.
Bonjour à tous,
Si le troisième espace est le premier CAR(160) de la chaine on peut essayer:
=STXT(GAUCHE(A1;CHERCHE(CAR(160);A1)-1);CHERCHE(" ";A1)+1;99)
Bonjour,
Je suis le seul à trouver un espace insécable (ASCII 0160) après le 6 ?
Daniel
Bonjour,
Non, je me suis fait planter par un certain nombre de formules qui ne rendent que 20 probablement de ce fait.
Je ne me souviens plus si j'ai repris la chaîne de caractères en mettant des espaces entre chaque partie, auquel cas la formule que j'ai illustrée fonctionne; sinon il faut probablement remplacer par une conditionnelle cherchant 32 ou 160.
Tant qu'on y est, un petit PQ :
let
Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
#"Colonne Extraite" = Table.TransformColumns(Source,{"ref", each Text.BetweenDelimiters(_," ", "#(00A0)")})
in
#"Colonne Extraite"
Plus on est de..........
Crdlmt
Bonjour,
Ta question a donné lieu à des réponses plus ou moins "savantes" selon qu'on a Excel 365 ou non et sûrement aussi pour le plaisir de discuter.
Si la chaîne avant celle à chercher et celle à chercher ont toujours le même nombre de caractères, on fait comme en <4> et on ferme le ban.
Sinon, le problème arrive de temps à autre à partir de l'extraction d'une base de données ou de la sortie de certaines commandes Dos, ce qu'on voit comme un espace est en fait un espace insécable.
Si on sait d'avance où il peut se trouver, pas de problème non plus, sinon les formules se compliquent parce qu'il faut à travers toute la chaîne rechercher l'hypothèse de l'un ou de l'autre.
Selon la longueur du fichier à traiter, on peut tricher par des alternatives en reprenant manuellement dans la cellule source la chaîne en supprimant tout ce qui ressemble à des espaces et en saisissant un espace à la place (c'est probablement ce que j'ai fait en <3> et qui alors fonctionne) ou bien appliquer à ce fichier un rechercher-remplacer préalable de tous les espaces insécables par des espaces classiques.
Bonjour,
Une solution tordue et forcément moins simple si on n'a pas 365 ou 2024
=STXT(A1;TROUVE(CAR(32);A1);TROUVE(" "; A1;TROUVE(" ";A1;TROUVE(" "; A1) +1) +1)-TROUVE(" ";A1))
Pardon, je ne sais pas compter, j'ai embarqué un espace de trop avant 20:
=STXT(A1;TROUVE(CAR(32);A1)+1;TROUVE(" "; A1;TROUVE(" ";A1;TROUVE(" "; A1) +1) +1)-TROUVE(" ";A1)-1)
Bonjour,
J'ai mis un peu de teps à vous répondre, désolé !
J'ai effectivement 365 et la formule fonctionne très bien !
Merci beaucoup !!