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

Fermé
accdr Messages postés 7 Date d'inscription vendredi 3 avril 2020 Statut Membre Dernière intervention 7 avril 2020 - Modifié le 7 avril 2020 à 11:43
accdr Messages postés 7 Date d'inscription vendredi 3 avril 2020 Statut Membre Dernière intervention 7 avril 2020 - 7 avril 2020 à 12:29
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

jee pee Messages postés 39583 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 avril 2024 9 225
7 avril 2020 à 11:52
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

1
accdr Messages postés 7 Date d'inscription vendredi 3 avril 2020 Statut Membre Dernière intervention 7 avril 2020
7 avril 2020 à 12:29
M. Jee Pee je n'ai plus qu'à vous remercier !

Belle journée,
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
Modifié le 7 avril 2020 à 12:27
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
1
franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
7 avril 2020 à 11:56
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
0