Répartir une cellule excel sur plusieurs lignes

Résolu/Fermé
ecga Messages postés 54 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 20 février 2017 - 24 janv. 2014 à 19:38
ecga Messages postés 54 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 20 février 2017 - 26 janv. 2014 à 10:54
Bonsoir,
je cherche répartir une cellule excel sur plusieurs lignes et non sur plusieurs colonnes comme le fait excel avec la touche convertir.
Par exemple j'ai:
Matière Active A 1;5;8;9
Matière Active B 2;5;8;7
et je voudrais avoir:
Matière Active A 1
Matière Active A 5
Matière Active A 8
Matière Active A 9
Matière Active B 2
Matière Active B 5
Matière Active B 8
Matière Active B 7

Avez vous une solution pour faire cela?

D'avance merci,
Ecga

7 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 25/01/2014 à 10:40
Bonjour

un exemple en VBA à adapter

texte originaux colonne A restitution en colonne D
https://www.cjoint.com/?3AzkNEp5FGU
le code
Option Explicit
Dim T_out()
'---------
Sub convertir(cellule, restitue)
Dim transfo As String, T_in, Cptr As Byte, Titre As String, nbre As Byte
transfo = Replace(cellule, ";", " ")
T_in = Split(transfo, " ")
For Cptr = 0 To 2
Titre = Titre & " " & T_in(Cptr)
Next
nbre = UBound(T_in) - 2
ReDim T_out(nbre)
For Cptr = 0 To nbre - 1
T_out(Cptr) = Titre & " " & T_in(Cptr + 3)
Next
restitue.Resize(nbre) = Application.Transpose(T_out)
End Sub
'----------
Sub transformer()
Dim derlig As Integer, lig As Integer, ligne As Integer
derlig = Columns("A").Find("*", , , , , xlPrevious).Row
For lig = 1 To derlig
ligne = Columns("D").Find("", Range("D" & Cells.Rows.Count)).Row
convertir Cells(lig, "A"), Cells(ligne, "D")
Next
End Sub

Michel
0