XL 2013 Extraine des chaînes de caractères

  • Initiateur de la discussion Initiateur de la discussion Gabmont
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Gabmont

XLDnaute Nouveau
Bonjour dans une cellule A1 j’ai le texte suivant :

Claudel (Paul), auteur ;
Denis (Maurice), illustrateur ;

Je souhaite obtenir :
dans une cellule B1 : le nom de de l’auteur 1 ;
dans une cellule C1, obtenir le : prénom de l’auteur 1,
dans une cellule D1, obtenir la fonction de l’auteur 1 (dans l'exemple: auteur)
Puis dans une cellule E1 le nom de l’auteur 2,
et ainsi de suite.
Comment puis-je procéder ?

J'arrive à faire un certain nombre de choses (voir deuxième pièce jointe: précisions):
en supposant que ma cellule de départ est en A3

Pour extraire le Nom (Prénom) auteur ; 1
=GAUCHE(A3;CHERCHE(",";A3)-1)

puis pour auteur ; Nom 1
=SUPPRESPACE(GAUCHE(B3;CHERCHE(" ";B3))&STXT(B3;CHERCHE(")";B3)+1;255))

puis pour auteur; prénom 1
=STXT(A3;CHERCHE(CAR(40);A3)+1;CHERCHE(CAR(41);A3)-CHERCHE(CAR(40);A3)-1)

A PARTIR DE LA CA SE COMPLIQUE POUR MOI

puis pour Nom (Prénom) auteur 2
=DROITE(A3;NBCAR(A3)-CHERCHE(",";A3))

puis pour Nom auteur 2
=GAUCHE(F3;CHERCHE(",";F3)-1)

puis pour Prénom auteur 2
=STXT(G4;CHERCHE(CAR(40);G4)+1;CHERCHE(CAR(41);G4)-CHERCHE(CAR(40);G4)-1)

LE PROBLEME c'est que je n'arrive pas à extraire le terme "auteur" et que je perd le terme illustrateur
 

Pièces jointes

Dernière modification par un modérateur:
Re : Extraine des chaînes de caractères

Bonjour Gabmont, et bonjour CISCO,

un essai macro :

Code:
Sub Decoupe()
 Dim i As Long, j As Byte, Tablo, Tabfin, Aut, Det, NomPre, x As Byte

 With Worksheets("Feuil1")
 Tablo = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
 ReDim Tabfin(1 To UBound(Tablo), 1 To 8)

 For i = LBound(Tablo) To UBound(Tablo)
    x = 0
    Aut = Split(Tablo(i, 1), ";")
    For j = 0 To UBound(Aut) - 1
        Det = Split(Aut(j), ",")
        NomPre = Split(Det(0), "(")
        Tabfin(i, 1 + x) = Det(0)
        Tabfin(i, 2 + x) = NomPre(0)
        If UBound(NomPre) = 1 Then Tabfin(i, 3 + x) = Left(NomPre(1), Len(NomPre(1)) - 1)
        Tabfin(i, 4 + x) = Det(1)
        x = x + 4
    Next
 Next
 .Range("B2").Resize(UBound(Tabfin), 8) = Tabfin
 End With
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
26
Affichages
1 K
Réponses
7
Affichages
786
Réponses
2
Affichages
905
Retour