Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…