Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

luckymaxou

XLDnaute Nouveau
Bonjour,
Je voudrais, sur Excel couper une chaine de caractère en 3
le séparateur est " - " (espace, tiret, espace)
la longueur de chaque partie est variable
E - 100 years - Five For Fighting (gv).kfn
supposons la cellule
A1 = E - 100 years - Five For Fighting (gv).kfn
je voudrais
A2 = E
A3 = 100 years
A4 = Five For Fighting (gv).kfn
pouvez vous m'aider s'il vous plait
merci beaucoup
Lucky
 

Dugenou

XLDnaute Barbatruc
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Bonjour,
en A2 :
Code:
=GAUCHE(A1;CHERCHE(" - ";A1)-1)
en A3 :
Code:
=STXT(A1;CHERCHE(" - ";A1)+3;CHERCHE(" - ";A1;CHERCHE(" - ";A1)+1)-CHERCHE(" - ";A1)-3)
en A4 :
Code:
=DROITE(A1;NBCAR(A1)-CHERCHE(" - ";A1;CHERCHE(" - ";A1)+1)-2)
Cordialement
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Bonjour Lucky,

voir exemple en pièce jointe

à+
Philippe

Edit: Bonjour Dugenou
 

Pièces jointes

  • 111.xls
    40.5 KB · Affichages: 983
  • 111.xls
    40.5 KB · Affichages: 927
  • 111.xls
    40.5 KB · Affichages: 986

luckymaxou

XLDnaute Nouveau
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

magnifique "Dugenou", ca marche du premier coup merci beaucoup
pour améliorer, je me suis aperçu que dans ma liste, il n'y avait pas toujours 3 partie, parfois il n'y en a que 2 et ca génére des codes d'erreur
par exemple
F - Les mystérieuses cités d'or.kfn
ce serai bien qu'il m'affiche les 2 parties au lieu d'un code d'erreur, tu as une solution ?
merci encore
 

Dugenou

XLDnaute Barbatruc
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Re,
Salut phlaurent

en A3 :
Code:
=SI(ESTERREUR(CHERCHE(" - ";A1;CHERCHE(" - ";A1)+1));"";STXT(A1;CHERCHE(" - ";A1)+3;CHERCHE(" - ";A1;CHERCHE(" - ";A1)+1)-CHERCHE(" - ";A1)-3))

en A4 :
Code:
=SI(ESTERREUR(CHERCHE(" - ";A1;CHERCHE(" - ";A1)+1));DROITE(A1;NBCAR(A1)-CHERCHE(" - ";A1)-2);DROITE(A1;NBCAR(A1)-CHERCHE(" - ";A1;CHERCHE(" - ";A1)+1)-2))

cordialement
 

luckymaxou

XLDnaute Nouveau
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

bonjour,
après votre aide super efficace, je reviens vous poser une question sur le même thème ou presque
je voudrais, dans une chaine, extraire la dernière chaine de caractères qui est entre parenthèses,
E - 1999 - Prince (duet) (gv).kfn => je voudrais ressortir (gv) et laisser (duet)

bon ! le problème est qu'il peut y avoir 1, 2 ou même 3 parenthèses placées dans ma phrase au départ, mais jamais imbriquées et aussi bien sûr le contenu des parties entre parenthèses est variable
n'hésitez pas à expliquer vos solutions, car j'adore pouvoir comprendre et ensuite extrapoler)
Merci à vous
(ah au fait, je préfère des fonctions Excel à des macros, je n'ai d'ailleurs pas su mettre en place la macro suggérée par Phlaurent, je le remercie, mais malheureusement je n'utilise pas VBA pour l'instant... bientôt peut-être;o)))
merci à vous
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Bonjour tout le monde,
à tester :
Code:
=STXT(A1;TROUVE("/";SUBSTITUE(A1;"(";"/";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"(";""))))+1;TROUVE("/";SUBSTITUE(A1;")";"/";NBCAR(A1)-NBCAR(SUBSTITUE(A1;")";""))))-TROUVE("/";SUBSTITUE(A1;"(";"/";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"(";""))))-1)
A+
 

luckymaxou

XLDnaute Nouveau
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Bonjour David,
merci beaucoup, ton code marche...
pourrais tu m'expliquer s'il te plait, la démarche et aussi pourquoi "/"
le principal pour moi est de pouvoir comprendre pour apprendre et refaire par moi même
merci infiniment
Lucky
 

luckymaxou

XLDnaute Nouveau
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

je crois avoir compris que tu remplaçais les ( et les ) par des /,
mais je ne comprend pas vraiment comment tu isoles la dernière parenthèse, (et pourtant ça marche, bien entendu ;o))...tu peux m'expliquer s'il te plait ?
merci beaucoup
Lucky
 

david84

XLDnaute Barbatruc
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Re
La fonction STXT selon l'aide d'Excel :
La syntaxe des fonctions STXT et MIDB contient les arguments (argument : valeur qui fournit des informations à une action, un événement, une méthode, une propriété, une fonction ou une procédure.) suivants :

texte Obligatoire. Représente la chaîne de texte contenant les caractères à extraire.
no_départ Obligatoire. Représente la position dans le texte du premier caractère à extraire. Le premier caractère de texte a un no_départ égal à 1, et ainsi de suite.
no_car Obligatoire. Indique le nombre de caractères à extraire du texte à l’aide de STXT.
L'argument texte, c'est la cellule à traiter : A2

L'argument n°_départ : position du caractère qui suit la dernière parenthèse entrante.
Ramené par
Code:
TROUVE("/";SUBSTITUE(A2;"(";"/";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"(";""))))+1

L'argument Nbre de caractères est calculé de la manière suivante:
Code:
=TROUVE("/";SUBSTITUE(A2;"(";"/";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"(";""))))
donne la position de la dernière parenthèse entrante.
Code:
=TROUVE("/";SUBSTITUE(A2;")";"/";NBCAR(A2)-NBCAR(SUBSTITUE(A2;")";""))))
donne la position de la dernière parenthèse sortante.
Formule2-Formule1-1 donne le nombre de caractères à extraire (3ème argument de la fonction STXT).

Mais si tu veux vraiment comprendre pourquoi cette formule est efficace, je te conseille d'étudier la fonction SUBSTITUE et la manière dont on peut utiliser son 4ème argument :
SUBSTITUE, fonction
Afficher toutMasquer tout
Cet article décrit la syntaxe de la formule et l’utilisation de la fonction (fonction : formule pré-écrite qui prend une ou plusieurs valeurs, exécute une opération, puis renvoie une ou plusieurs valeurs. Utilisez des fonctions pour simplifier et raccourcir des formules sur une feuille de calcul, notamment celles qui effectuent des calculs longs et complexes.) SUBSTITUE dans Microsoft Excel.

Description
Remplace l’argument ancien_texte par nouveau_texte dans une chaîne de texte. Utilisez la fonction SUBSTITUE lorsque vous voulez remplacer un texte spécifique à l’intérieur d’une chaîne de texte. Utilisez la fonction REMPLACER lorsque vous voulez remplacer n’importe quel texte se trouvant à un endroit spécifique d’une chaîne de texte.

Syntaxe
SUBSTITUE(texte, ancien_texte, nouveau_texte, [no_position])La syntaxe de la fonction SUBSTITUE contient les arguments (argument : valeur qui fournit des informations à une action, un événement, une méthode, une propriété, une fonction ou une procédure.) suivants :

texte Obligatoire. Représente le texte ou la référence à une cellule contenant le texte dont vous voulez remplacer certains caractères.
ancien_texte Obligatoire. Représente le texte à remplacer.
nouveau_texte Obligatoire. Représente le texte qui doit remplacer ancien_texte.
no_position Facultatif. Spécifie quelle occurrence de ancien_texte vous souhaitez remplacer par nouveau_texte. Si vous spécifiez no_position, seule l’occurrence correspondante de ancien_texte est remplacée. Sinon, toutes les occurrences de ancien_texte dans texte sont remplacées par nouveau_texte.
A+
 

Staple1600

XLDnaute Barbatruc
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Bonjour à tous

Bonjour,
Je voudrais, sur Excel couper une chaine de caractère en 3
le séparateur est " - " (espace, tiret, espace)
la longueur de chaque partie est variable
E - 100 years - Five For Fighting (gv).kfn
supposons la cellule
A1 = E - 100 years - Five For Fighting (gv).kfn
je voudrais
A2 = E
A3 = 100 years
A4 = Five For Fighting (gv).kfn
pouvez vous m'aider s'il vous plait
merci beaucoup
Lucky

La logique voudrait si tu utilises ta feuille comme base de donnée avec en ligne 1 les entêtes (ou noms de champs)
(et avec comme principe une ligne = un enregistrement)

Dans cette configuration, tu peux utiliser Données/Convertir pour "couper ta chaîne)
Avec ton exemple, cela pourrait donner ceci:
1) Tu sélectionnes tes données en colonne A
2) Tu fais Données/Convertir , tu choisis comme séparateur le tiret (suis les indications données par l'assistant)
Au final tu auras tes données extraites en A2,B2,C2,D2 etc..

Plus de détails ici ou cas ou
.

PS: Pour le lien ci-dessus, seule la partie relative à Données/Convertir sert à illustrer mon propos.
(Et m'évite surtout de devoir faire les copies d'écran moi-même ;) )
 

luckymaxou

XLDnaute Nouveau
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

bonjour,
merci pour ta réponse Staple
le problème est que je ne veux pas comme séparateur le tiret seul (mais une chaine de caractères comprenant espace tiret espace)
ceci pour pouvoir traiter par exemple
"E - Jean-Jacques Dupont - Il fait beau"
comme 3 cellules (E; Jean-Jacques Dupont; Il fait beau)
j'ai déjà obtenu une réponse satisfaisante, mais c'est sûr que si on pouvait faire marcher "convertir" avec une chaine au lieu d'un séparateur seul ce serait génial
Bon WE
 

Staple1600

XLDnaute Barbatruc
Re : Couper une chaine en 3 avec comme separateur " - " (espace tiret espace)

Re


Il est toujours possible de biaiser avec Execl ;)
Il suffit de remplacer ESPACEtiretESPACE par £ (ceci manuellement ou par macro)
et ensuite d'utiliser Données/Convertir avec comme séparateur £.

PS: Bien évidemment tu peux choisir un autre séparateur si tu le souhaites ;)
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16