Répartir des mots séparés par un "/" dans plusieurs cellules

  • Initiateur de la discussion Initiateur de la discussion ttlan
  • 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 !

ttlan

XLDnaute Nouveau
Bonjour,

J'ai une colonne avec des mots (1, 2 ou 3 mots) séparés par des " / ", comme :
Pierre
Pierre / Paul
Pierre / Paul / Jaques

Je voudrais séparer ces mots dans trois colonnes (en répétant le dernier mot pour toujours compléter les 3 colonnes). Obtenir quelque chose comme la pièce jointe.

J'arrive à me débrouiller avec Pierre / Paul, mais lorsqu'il n'y a pas de "/" ou lorsqu'il y en a 2, je patauge.

Est-ce que quelqu'un a une solution simple et élégante ?

Merci

Cordialement
 

Pièces jointes

Bonsoir ttlan, Dugenou, zebanx,

3 formules assez simples en B1 C1 D1 du fichier joint :
Code:
=GAUCHE(A1;TROUVE(" /";A1&" /")-1)

=SI(A1=B1;B1;STXT(A1;NBCAR(B1)+4;TROUVE(" /";A1&" /";NBCAR(B1)+4)-NBCAR(B1)-4))

=SI(OU(A1=B1;A1=B1&" / "&C1);C1;STXT(A1;NBCAR(B1)+NBCAR(C1)+7;9^9))
A+
 

Pièces jointes

Dernière édition:
Bonsoir Job75
On a surtout pas l'habitude que tu te limites à seulement 2 propositions !! 😀😀😀
Le cap des 1700 j'aime est passé tiens 😉.
Et 23000 réponses depuis 2008 wa-ouhhh 🙄


edit :
solution apportée par MaPomme, plus commode à utiliser, en VBA et venant d'un de ses derniers posts
 

Pièces jointes

Dernière édition:
Bonjour zebanx, le forum,

Par curiosité j'ai voulu voir ce que donne le remplissage du tableau avec les 3 formules du post #6 :
Code:
Sub Spliter()
Application.ScreenUpdating = False
With ActiveSheet.UsedRange.Offset(1)
  .Columns(2) = "=LEFT(TRIM(A2),FIND("" /"",TRIM(A2)&"" /"")-1)"
  .Columns(3) = "=IF(TRIM(A2)=B2,B2,MID(TRIM(A2),LEN(B2)+4,FIND("" /"",TRIM(A2)&"" /"",LEN(B2)+4)-LEN(B2)-4))"
  .Columns(4) = "=IF(OR(TRIM(A2)=B2,TRIM(A2)=B2&"" / ""&C2),C2,MID(TRIM(A2),LEN(B2)+LEN(C2)+7,9^9))"
  .Columns(2).Resize(, 3) = .Columns(2).Resize(, 3).Value
End With
End Sub
Chez moi cette macro s'exécute en 1,1 milliseconde, celle du post précédent en 2,8 millisecondes.
A+
 

Pièces jointes

Bonjour Job75

C'est plus le côté de suppression des cellules en colonnes B à D (au cas où on en aurait laissés et qui n'auraient pas de correspondance en colonne A (=vide)) qui m'intéresse dans ta proposition qui touche, encore une fois, sa cible tant dans sa rédaction que sa rapidité d'exécution. On est habitué 🙂

L'auteur du post a le choix en tout cas et cette dernière proposition devrait l'emporter.
++
zebanx
 
Dernière édition:
Bonjour,
Ce que je trouve scandaleux, c'est que vous ayez tous la capacité de répondre instantanément, les doigts dans le nez, à des questions (qui me semblent) tordues, avec élégance et efficacité !
J'ai adopté la formulation de job75, celle avec des formules, plutôt que du VBA dont je ne suis pas du tout familier.
Puisque c'est ainsi, j'ouvre un autre fil pour une autre question.
Merci à tous
 
Bonsoir ttlan

En repartant du code de JOB75 😎

Il y a deux macros :
- La première remet les informations dans une seule colonne
- La seconde est le code de JOB75 (sur 3 prénoms)

Vous pourrez tout remettre dans un seul module si vous le souhaitez mais pour l'instant, les deux étapes sont séparées.

Cdlt
zebanx
 

Pièces jointes

Dernière édition:
- 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

Retour