XL 2013 Extraine des chaînes de caractères

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

  • question.xlsx
    9.2 KB · Affichages: 34
  • question.xlsx
    9.2 KB · Affichages: 29
  • précision question Gabmont.xlsx
    9.2 KB · Affichages: 22
  • précision question Gabmont.xlsx
    9.2 KB · Affichages: 16
Dernière modification par un modérateur:

CISCO

XLDnaute Barbatruc
Re : Extraine des chaînes de caractères

Bonsoir

Quelques possibilités en pièce jointe.

@ plus
 

Pièces jointes

  • précision question Gabmont.xlsx
    14 KB · Affichages: 21
  • précision question Gabmont.xlsx
    14 KB · Affichages: 15

Paf

XLDnaute Barbatruc
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+
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55