Découper une chaîne de caractère et la ranger en lignes et colonnes [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020
-
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020
-
Bonjour,

J'ai un petit problème excel.

A partir d'une chaîne de caractère du même type que celle ci-dessous, je souhaiterais créer une macro VBA ou utiliser une fonction prédefinie d'excel afin de :

- 1) séparer la chaîne de caractère en 3 colonnes : nom / prenom / @mail
- 2) aller à la ligne pour chaque nouvelle personne
- 3) enlever les séparateurs comme les < ; >

BOTTRAS Nicolas <bottrasn@gmail.com>; LARRIEU Cedric <cedric.larrieu@gmail.com>; MICHUD Daniel <d.michud@gmail.com>;

L'idée serait d'obtenir le même résultat que sur l'image.

https://img-19.ccm2.net/4igqnU4fIEZdAprKqPFX3crpmMM=/b0ce375c82f54dd69cf1f17b03f5d292/tmp/Capture.PNG
|fancy]

Merci d'avance pour votre aide.

R.L.

4 réponses

Messages postés
52448
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020
14 305
Bonjour.

Et, dans les noms, il n'y en a jamais un qui ressemble à DE MONTAIGNAC ? Ni, dans les prénoms, un qui ressemble à Max Henri ou à William Jr ? C'est-à-dire avec des espaces ...

Dans ta chaîne de caractères, il y a combien de personnes ? Seulement 3 ou plutôt une centaine ?
Il y a une seule chaîne avec toutes les personnes, ou plusieurs chaînes à gérer ?
Cette chaîne (ou ces chaînes) provient de quelle source : Web, cvs, Access ... ?
Messages postés
23568
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020
6 408
Bonjour,

j'ajouterai : les noms sont toujours en majuscule et prénoms avec juste l'initiale ?
eric
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020

Bonjour Raymond et Eric, les noms sont toujours en majuscule et les initiales des prénoms également. Dans les prénoms il est possible de rencontrer ce type de personne

Noms à particule: DE HERDT Marc <marc.deherdt2@laposte.net>
Prénoms composés: ANGEON Rose Aimee <roseaimeeangeon@gmail.com>

Il y aurait une seule chaîne d'environ 1500 personnes à gérer. Cette chaîne provient d'une liste de diffusion outlook. L'idée serait d'importer directement la liste outlook au format cvs sur excel mais je n'ai pas trouvé de plugins permettant de faire le transfert (seuls le nom de la liste de diffusion est importé sur excel). Je suis donc obligé de dérouler la liste de diffusion pour la copier-coller dans une cellule excel, ce qui donne cette longue chaîne de caractères.

Merci beaucoup de vous l'intérêt que vous portez à cette question.

R.L.
Messages postés
12771
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
15 octobre 2020
2 043
Bonjour Romain
Coucou Raymond et eriiic

A condition qu'il n'y ait pas comme l'a bien précisé Raymond des espaces entre 2 parties de noms ou de prénoms un exemple par macro à adapter
https://mon-partage.fr/f/c2zlIUhN/

Cdlmnt
Via
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020

Bonjour Via 55,

Merci beaucoup pour cette macro ! Effectivement elle marche très bien, à l'exception des noms et prénoms composés. Finalement il serait possible de contourner le problème des noms et prénoms composés en récupérant uniquement les adresses mail. Auriez-vous une idée de la partie du programme à modifier ? (il n'y aurait qu'une seule colonne composée des mails)

Merci encore pour ce très beau programme.

R.L.
Messages postés
23568
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020
6 408 >
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020

Bonjour,

On aurait pu se baser sur les majuscules pour distinguer les noms des prénoms.
Mais bon, si les mails te suffisent, pas la peine de s'embêter.
Par contre il y a une limite aux tailles des chaines en vba (que j'ai oubliée). Contrôle que le dernier élément sort bien.
eric

PS : qq chose m'échappe. Le csv fournit un enregistrement par ligne, pas tout sur une seule ligne...
Ah vu, c'est une liste de diffusion, pas un export
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020
>
Messages postés
23568
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020

Rebonjour Eric,

Merci beaucoup pour ton message et ton conseil : effectivement les chaînes vba sont limitées, je séparerai l'opération en 2 fois pour que tous les éléments sortent bien.

Merci encore pour vos conseis avisés et bonne journée :)

R.L.
Messages postés
12771
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
15 octobre 2020
2 043 >
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020

Re

Remplace la macro par celle-ci, tu auras dans la 1ere colonne les nom prénom et dans la 2nde le mail
Sub decoupe()
chaine = ActiveCell.Value

If Right(chaine, 1) = ";" Then chaine = Left(chaine, Len(chaine) - 1) ' suppression du ; final s'il existe

tablo = Split(chaine, ";") ' découpe chaine en fonction des ;

For n = 0 To UBound(tablo) ' boucle sur les élements du tableau

    newchaine = WorksheetFunction.Substitute(tablo(n), ">", "") 'supprime le >
    
    If Left(newchaine, 1) = " " Then newchaine = Right(newchaine, Len(newchaine) - 1) 'suppression du caractère espace en début s'il existe
    
    tablo2 = Split(newchaine, "<") ' découpe la nouvelle chaîne en fonction d u <
    
    x = Sheets("Feuil2").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1 ' 1ere ligne vide en col A de Feuil2
    
    'remplit les cellules des 2 colonnes de feuille 2
    Sheets("Feuil2").Cells(x, 1) = tablo2(0)
    Sheets("Feuil2").Cells(x, 2) = tablo2(1)

Next n

Sheets("Feuil2").Activate
End Sub


Cdlmnt
Via
Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020
>
Messages postés
12771
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
15 octobre 2020

Bonjour Via,

Ta version est vraiment au top et très fonctionnelle. Merci beaucoup pour ton aide.

En te souhaitant une excellente journée.

Cordialement,

R.L.
Messages postés
16243
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 octobre 2020
3 049
Bonjour à tous

Proposition avec seulement identité et adresse mail



la maquette
https://mon-partage.fr/f/VnKJ6Tbe/

Messages postés
6
Date d'inscription
mercredi 7 octobre 2020
Statut
Membre
Dernière intervention
8 octobre 2020

Trop fort Michel !

La macro marche super bien (seule la dernière ligne n'est pas prise en compte mais pour 1 personne ça se fait facilement manuellement).

Merci beaucoup pour votre aide, sans vous je n'y serais pas arrivé.

En vous souhaitant une bonne journée !

R.L.