Transformer Lignes-Colonnes en Colonne-Colonne

ZecK

XLDnaute Nouveau
Bonjour,

J'ai tenté quelques recherches mais je n'arrive pas à réellement exprimer ce dont j'ai besoin. Du coup, pas facile :)

Je souhaite transformer facilement un tableau type Lignes-Colonnes en agrégat Colonne-Colonne.

Exemple, en lignes, lundi à dimanche, pour les colonnes pillule bleue, rouge, verte et un nombre par jour.

Je voudrais le transformer en lignes qui me donneraient lundi - bleue - 3, lundi - rouge - 2, lundi - verte - 4.

En gros, je garde mes lignes mais elle se répète du nombre de colonnes et j'ai ma valeur à la fin.

Merci d'avance de votre aide.

Cordialement,

Ezeckiel.
 

Pièces jointes

  • Transpoline.xlsx
    19.3 KB · Affichages: 37
  • Transpoline.xlsx
    19.3 KB · Affichages: 38
Dernière édition:

ZecK

XLDnaute Nouveau
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Je sais, c'est moche :D

Mais c'est pour illustrer le propos :)

Capture.jpg

Je pense qu'un tableau croisé dynamique devrait faire l'affaire, non?
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    32.1 KB · Affichages: 54

Victor21

XLDnaute Barbatruc
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Bonsoir

Je sais, c'est moche :D

Mais c'est pour illustrer le propos :)

Regarde la pièce jointe 347427

Je pense qu'un tableau croisé dynamique devrait faire l'affaire, non?
Je confirme : c'est moche, et je pense pour ma part qu'un fichier Excel devrait faire l'affaire, non ? ne serait-ce que pour tester nos éventuelles propositions
 

Roland_M

XLDnaute Barbatruc
Re : Transformer Lignes-Colonnes en Colonne-Colonne

bonsoir à tous,

avec transpose !
exemple des données en A1 jusque C3
recopié en A5:C7 ce qui inverse lig/col

Sub Essai()
Dim Tablo As Variant
Set Tablo = Range("A1:C3")
Range("A5:C7") = Application.Transpose(Tablo)
End Sub


encore que ... je viens de voir ton modèle ... !?
 

ZecK

XLDnaute Nouveau
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Bonsoir


Je confirme : c'est moche, et je pense pour ma part qu'un fichier Excel devrait faire l'affaire, non ? ne serait-ce que pour tester nos éventuelles propositions

Je viens d'éditer le premier message avec une pièce jointe. Tabeau du haut, celui que j'ai. Tableau du bas, celui que je souhaite obtenir en automatisant pour limiter le risque d'erreur du copier-coller-transposer.

Désolé, pas mis de fichier excel au début car j'ai toujours l'impression de donner le sentiment que j'attends que l'on fasse le travail pour moi en donnant un fichier :)

Merci à nouveau !
 

klin89

XLDnaute Accro
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Bonsoir ZecK, le forum :)

A tester :
VB:
Option Explicit

Sub test()
Dim a, b(), i As Long, j As Long, n As Long
    With Sheets(1).Range("a1").CurrentRegion
        a = .Value
    End With
    ReDim b(1 To (UBound(a, 1) - 2) * (UBound(a, 2) - 2), 1 To 3)
    For i = 2 To UBound(a, 1) - 1
        For j = 2 To UBound(a, 2) - 1
            n = n + 1
            b(n, 1) = a(i, 1)
            b(n, 2) = a(1, j)
            b(n, 3) = a(i, j)
        Next
    Next
    Application.ScreenUpdating = False
    'Restitution en feuil2
    With Sheets(2)
        .Cells.Clear
        With .Cells(1).Resize(, 3)
            .Value = [{"Account","Id","Amount"}]
            .Offset(1).Resize(n).Value = b
            With .CurrentRegion
                .Font.Name = "calibri"
                .Font.Size = 10
                .VerticalAlignment = xlCenter
                .BorderAround Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                With .Rows(1)
                    .Interior.ColorIndex = 42
                    .BorderAround Weight:=xlThin
                End With
                .Columns(3).NumberFormat = "#,##0.00"
                .Columns.ColumnWidth = 12
            End With
        End With
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Re, Zeck, bonsoir Roland_M, klin89.

Une proposition par formules et mise en forme conditionnelle en pj :
 

Pièces jointes

  • Transpoline.xlsx
    23.9 KB · Affichages: 41
  • Transpoline.xlsx
    23.9 KB · Affichages: 37

ZecK

XLDnaute Nouveau
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Ia Orana tout le monde, désolé de mon retour tardif (petit décalage horaire de mon coté :)).

D'abord merci à tous pour votre aide. J'aime beaucoup, dois-je avouer, les versions par formules, plus dans mes cordes.

@klin89, au risque de paraître idiot mais dans une volonté de progresser, quelle est la partie de la Macro qui ne prend pas en compte la colonne TOTAL? Car si je l'enlève, il me manque alors la dernière colonne. J'ai essayé de bidouiller un peu sur les éléments de la macro que je comprends mais pas réussi :D

Merci à nouveau à tous!
 

Roland_M

XLDnaute Barbatruc
Re : Transformer Lignes-Colonnes en Colonne-Colonne

bonsoir,

pour ce qui est de la macro il y a deux erreurs !
voir classeur exemple ci-joint !

Code:
Sub Transfert()
Dim A As Variant, Tablo(), I As Long, J As Long, N As Long
    A = Sheets(1).Range("A1").CurrentRegion 'load tableau
    IdxLig = UBound(A, 1): IdxCol = UBound(A, 2)
    MaxTablo = (IdxLig - 1) * (IdxCol - 1) '< ici c'est -1 et pas -2 sinon on a pas jusque "dimanche" ni les "Vert" !
    ReDim Tablo(1 To MaxTablo, 1 To 3): N = 0
    For I = 2 To IdxLig: For J = 2 To IdxCol '< et ici ce n'est pas -1
        N = N + 1
        Tablo(N, 1) = A(I, 1)
        Tablo(N, 2) = A(1, J)
        Tablo(N, 3) = A(I, J)
    Next: Next
    Application.ScreenUpdating = False
    'Restitution en feuil2
    With Sheets(2)
        .Cells.Clear
        With .Cells(1, 1).Resize(, 3)
             .Value = [{"Jours","Couleur","Nbr"}] 'colle l'entête
             .Offset(1).Resize(N).Value = Tablo 'colle le tablo
             With .CurrentRegion
                .Font.Name = "calibri"
                .Font.Size = 10
                .VerticalAlignment = xlCenter
                .BorderAround Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                With .Rows(1)
                    .Interior.ColorIndex = 42
                    .BorderAround Weight:=xlThin
                End With
                .Columns(3).NumberFormat = "#,##0.00"
                .Columns.ColumnWidth = 12
            End With
        End With
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • tranfert tablo.xlsm
    15.7 KB · Affichages: 33

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 103
Membres
104 032
dernier inscrit
akram.job