Extraire les numéros des lignes de texte

centurion

XLDnaute Junior
Bonjour les amis,

J'ai 1550 lignes sur la colonne "A" cette mise en forme de texte:

Quand j'ai le nom de l'auteur et plus d'une page:
Le titre du livre 23 Le nom de l'auteur 20-26

Quand j'ai le nom de l'auteur et une seule page:
Le titre du livre 23 Le nom de l'auteur 20

Quand je n'ai pas le nom de l'auteur et et plus d'une page:
Le titre du livre 23 20-26

Quand je n'ai pas le nom de l'auteur et une seule page:
Le titre du livre 23 20

J'aimerais avoir ça en colonnes séparées ?
23 ¦ Le titre du livre ¦ Le nom de l'auteur ¦ 20-26

En vous remerciant par avance
Cordialement
Centurion
 

centurion

XLDnaute Junior
Bonjour Kan3pz,

C'est presque ce que je voulais.
J'ai téléversé un fichier, pour que vous puissiez mieux comprendre.
En resumé : j'ai un index avec tout sur une colonne et je voudrais des colonnes séparées.

Avec mes remercîments
Cordialement
Centurion
 

Pièces jointes

  • INDEX.xlsx
    10.2 KB · Affichages: 47
Dernière édition:

zebanx

XLDnaute Accro
Bonsoir,

C'est assez coriace de trouver des réponses à cette demande.

Bon, en cherchant, parce que c'est intéressant à conserver, un fichier qui doit correspondre mais :
- la macro traite les "-" comme des lettres donc les derniers caractères doivent faire l'objet d'un traitement particuliers pour aller rechercher le dernier espace.

Avant d'appuyer sur le rectangle, prévoir de sélectionner la zone svp sinon il y aura un message d'erreur (fonctionne avec une SELECTION).

Il y aura donc un peu de manip" à faire, mais ce n'est franchement plus long !
(à moins de substituer le caractère "-" par " " avant le lancement de la macro).

Bonne soirée
thierry
 

Pièces jointes

  • index.xls
    42 KB · Affichages: 40
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

sélectionner la plage à traiter et clic bouton.
J'ai fait comme ça pour ne pas écraser d'éventuelles retouches manuelles, mais on peut changer pour traiter toute la colonne directement.
eric
 

Pièces jointes

  • INDEX.xlsm
    19.1 KB · Affichages: 32

job75

XLDnaute Barbatruc
Bonsoir centurion, zebanx, eriiiic, [edit] kan3pz,

Cette fonction VBA (matricielle) est relativement simple :
Code:
Function Eclater(t$)
Dim i%, s
t = Application.Trim(t) 'SUPPRESPACE
For i = 1 To Len(t)
  If Mid(t, i, 2) Like " #" Then t = Left(t, i - 1) & Chr(1) & Mid(t, i + 1)
  If Mid(t, i, 2) Like "# " Then t = Left(t, i) & Chr(1) & Mid(t, i + 2)
Next
If t = "" Then s = "" Else s = Split(t, Chr(1)): t = s(1): s(1) = s(2): s(2) = t
Eclater = s 'vecteur ligne
End Function
A entrer sur la plage C2:F2 et à valider matriciellement par Ctrl+Maj+Entrée.

Fichier joint.

Bonne fin de soirée.
 

Pièces jointes

  • Eclater(1).xlsm
    16.9 KB · Affichages: 39
Dernière édition:

Discussions similaires

Réponses
13
Affichages
481

Statistiques des forums

Discussions
311 540
Messages
2 080 532
Membres
101 234
dernier inscrit
Layani89