XL 2016 Créer des lignes issues d'un tableau

BARNEOUD-ROUSSET Laurent

XLDnaute Nouveau
Bonjour,
Je souhaiterais transposer un tableau, composé d'arguments dans une cellule, en un autre tableau composée de lignes.
Ci joint un exemple car ce sera plus parlant.
Dans la mesure du possible, je souhaiterais ne pas faire appel au macro et uniquement utiliser les formules d'excel.

d'avance merci pour vos conseils et aide
 

Pièces jointes

  • convertir des colonnes en lignes.xlsx
    11 KB · Affichages: 22

vgendron

XLDnaute Barbatruc
Hello
alors désolé, mais par formule.. je ne saurai pas faire..
par macro par contre
VB:
Sub LigntoCol()
Dim tabini() As Variant
Dim tabfin() As Variant
tabini = Range("A7:C10").Value
For i = LBound(tabini, 1) To UBound(tabini, 1)
    nb = nb + Len(tabini(i, 1)) - Len(WorksheetFunction.Substitute(tabini(i, 1), ",", "")) + 1
Next i
ReDim tabfin(1 To nb, 1 To 3)
k = 1
For i = LBound(tabini, 1) To UBound(tabini, 1)
    ele = Split(tabini(i, 1), ",")
    For j = LBound(ele) To UBound(ele)
        tabfin(k, 1) = ele(j)
        tabfin(k, 2) = tabini(i, 2)
        tabfin(k, 3) = tabini(i, 3)
        k = k + 1
    Next j
Next i
Range("A12").Resize(UBound(tabfin, 1), UBound(tabfin, 2)) = tabfin
End Sub
 

BARNEOUD-ROUSSET Laurent

XLDnaute Nouveau
Bonjour vgendron,
Un grand merci pour ton code. ca marche bien avec mon tableau exemple. Si je comprend bien et si je veux l'appliquer à un tableau plus grand, je n'ai qu'a changer le "range" dans la fonction VB ?
Idem pour le placement de mon tableau Range "A12" deviendrait range "ma cellule souhaitée" ?
encore merci pour ta réponse et pour le temps que tu y a passé.
Cordialement,
 

vgendron

XLDnaute Barbatruc
Si je comprend bien et si je veux l'appliquer à un tableau plus grand, je n'ai qu'a changer le "range" dans la fonction VB ?
Idem pour le placement de mon tableau Range "A12" deviendrait range "ma cellule souhaitée" ?
Hello
effectivement, pour le tableau initial, il suffit de changer le range (cela peut aussi etre fait à peu près automatiquement)
si ton tableau commence en A7: tu peux peut etre faire un : tabini=range("A7").currentregion.value

pour la destination du résultat, il suffit effectivement de donner la première cellule (A12 dans le cas présent)
ca peut etre aussi une autre feuille: sheets("feuil2").range("A1").resize.......
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 870
dernier inscrit
Armisa