Afficher tous les mots entre les virgules d'une cellule vers des lignes

Signaler
Messages postés
7
Date d'inscription
vendredi 3 avril 2020
Statut
Membre
Dernière intervention
7 avril 2020
-
Messages postés
7
Date d'inscription
vendredi 3 avril 2020
Statut
Membre
Dernière intervention
7 avril 2020
-
Bonjour à tous,

Voici ma question :
En cellule A1 j'ai mes destinations :
A1 : Vichy, Vittel, Paris, Canet en Roussillon, Perpignan
Ces destinations sont toutes séparées par une virgule.

Je souhaite faire ressortir toutes les destinations de cette cellule A1 dans différentes lignes ci-dessous :
B1 : Vichy -> soit la première destination avant la vigule
B2 : Vittel -> soit la deuxième destination après la 1ère virgule
B3 : Paris -> soit la troisième destination après la 2ème virgule et ainsi de suite
B4 : Canet en Roussillon
B5 : Perpignan

Je ne souhaite pas utiliser l'assistant de conversion ou une requête, car cette ligne change en fonction de mes clients, donc les destinations peuvent être à des places différentes et avec un nombres de lettres différents aussi.

Auriez-vous une formule à me proposer pour solutionner ma problèmatique ?

Merci pour vos réponses et prenez soins de vous !
Belle journée,

3 réponses

Messages postés
28849
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
29 mai 2020
6 345
Bonjour,

A mettre en B1 et dupliquer vers le bas :

=SI(NBCAR($A$1)-NBCAR(SUBSTITUE($A$1;",";""))+1<LIGNES($1:1);"";SI(LIGNES($1:1)>NBCAR($A$1)-NBCAR(SUBSTITUE($A$1;",";""));DROITE($A$1;NBCAR($A$1)-TROUVE("^^";SUBSTITUE($A$1;",";"^^";NBCAR($A$1)-NBCAR(SUBSTITUE($A$1;",";"")))));SI(LIGNES($1:1)=1;STXT($A$1;1;TROUVE("^^";SUBSTITUE($A$1;",";"^^";1))-1);STXT($A$1;TROUVE("^^";SUBSTITUE($A$1;",";"^^";LIGNES($1:1)-1))+1;TROUVE("^^";SUBSTITUE($A$1;",";"^^";LIGNES($1:1)))-TROUVE("^^";SUBSTITUE($A$1;",";"^^";LIGNES($1:1)-1))-1)))) 


Totalement pris sur : https://forum.excel-pratique.com/viewtopic.php?t=14153

Messages postés
7
Date d'inscription
vendredi 3 avril 2020
Statut
Membre
Dernière intervention
7 avril 2020

M. Jee Pee je n'ai plus qu'à vous remercier !

Belle journée,
Messages postés
2089
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
28 mai 2020
272
Bonjour accdr,

Je ne souhaite pas utiliser l'assistant de conversion ou une requête, car cette ligne change en fonction de mes clients, donc les destinations peuvent être à des places différentes et avec un nombres de lettres différents aussi.

Voici une proposition qui donne le résultat dans un encart plutôt que des cellules de destination vu qu'on sait pas si les lignes de destinations seront libres ou pas. On peut bien sûr mettre des cellules de destination à la place de l'encart.

La macro réagit lors d'un double-clic sur la cellule à tester

le fichier
https://mon-partage.fr/f/vmYk6XQ3/

Le code associé, macro dans le module de la feuille
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.ScreenUpdating = False
    Texte = [A1]
    Crit = Split(Texte, ",")
    For k = 0 To UBound(Crit)
        Liste = Liste & Chr(10) & Trim(Crit(k))
    Next
    MsgBox Trim(Liste)
End Sub


Cdlt
Messages postés
81
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
11 mai 2020
12
Bonjour
Par macro
cliquer sur le nom de la feuille avec le bouton droit
choisir visualiser le code
copier la macro ci dessous

Private Sub CommandButton1_Click() 'transposer
Dim i As Long, lig As Long
lig = 1
For i = 1 To Len(Range("A1").Value)
If Mid(Range("A1").Value, i, 1) <> "," Then
Range("B" & lig).Value = Range("B" & lig).Value + Mid(Range("A1").Value, i, 1)
Else
lig = lig + 1
End If
Next
End Sub


A+ François