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

accdr Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
accdr Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
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 41521 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
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   Statut Membre Dernière intervention  
 
M. Jee Pee je n'ai plus qu'à vous remercier !

Belle journée,
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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   Statut Membre Dernière intervention   38
 
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