Transformer Lignes-Colonnes en Colonne-Colonne

  • Initiateur de la discussion Initiateur de la discussion ZecK
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

ZecK

Guest
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

Dernière modification par un modérateur:
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Je sais, c'est moche 😀

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: 60
Re : Transformer Lignes-Colonnes en Colonne-Colonne

Bonsoir

Je sais, c'est moche 😀

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
 
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 ... !?
 
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 !
 
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:
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 😀

Merci à nouveau à tous!
 
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

Re : Transformer Lignes-Colonnes en Colonne-Colonne

Effectivement! Je ne m'en étais pas rendu compte car la dernière ligne sur mon fichier s'annule avec une précédente donc le total est le même. Merci beaucoup!

Ezeckiel.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour