Restructurer Tableau_TCD

Bonjour à tous,

Je cherche une solution qui me fait gagner du temps pour restructurer mon tableau (output) pour que je puisse l'exploiter par la suite avec le TCD.

Ci-joint le fichier avec plus d'explication c'est-à-dire le résultat voulu.

Merci beaucoup et je compte sur vos créativités

8classeur.xlsx (24.29 Ko)

bonjour,

Un essai avec des formules.

J'ai ajouté des colonnes intermédiaires (on pourrait en limiter le nombre en compliquant un peu les formules).

1classeur-1.xlsm (44.06 Ko)

Bonjour,

Une proposition à étudier.

Les données sont mises sous de tableau (normalisé) avec un TCD pour exemple.

Cdlt.

Option Explicit

Public Sub ConsolidateData()
Dim wb As Workbook
Dim wsData As Worksheet, wsPT As Worksheet
Dim tbl, Arr()
Dim lo As ListObject
Dim rStart As Range
Dim I As Long, J As Long, k As Long
Dim x As String, y As String, z As String

    Application.ScreenUpdating = False

    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("Données")
    Set wsPT = wb.Worksheets("TCD")
    Set lo = wsPT.ListObjects(1)

    If Not lo.DataBodyRange Is Nothing Then lo.DataBodyRange.Delete
    Set rStart = lo.InsertRowRange.Cells(1): k = 0

    With wsData
        tbl = .Cells(1).CurrentRegion
        For I = 2 To UBound(tbl, 1)
            If Not IsDate(tbl(I, 1)) Then
                x = tbl(I, 1)
                y = tbl(I, 2)
                z = tbl(I, 3)
            End If
            For J = 1 To UBound(tbl, 2)
                ReDim Preserve Arr(6, k + 1)
                If Not IsDate(tbl(I, 1)) Then
                    k = k - 1
                    Exit For
                End If
                Arr(0, k) = CLng(tbl(I, 1))
                Arr(1, k) = x
                Arr(2, k) = y
                Arr(3, k) = z
                Arr(4, k) = tbl(I, 2)
                Arr(5, k) = tbl(I, 3)
            Next J
            k = k + 1
        Next I
    End With

    rStart.Resize(UBound(Arr, 2), 6).Value = Application.Transpose(Arr)

    With wsPT
        .Activate
        .PivotTables(1).PivotCache.Refresh
    End With

    Set rStart = Nothing
    Erase Arr()
    Set lo = Nothing
    Set wsPT = Nothing: Set wsData = Nothing
    Set wb = Nothing

End Sub

Merci beaucoup pour les propositions .

j'ai bien apprécié le fichier de Jean Eric.

J'aimerai savoir serait il possible de rendre l'ajout des colonnes suppl libre. autrement dit si j'ajoute une ou deux colonnes dans le tableau de la feuil "données" le résultat au niveau de la feuil TCD sera automatique (consolidation)

Merci encore.

ci-joint le même fichier avec l'ajout de deux colonnes au niveau du tableau.

Re,

Si tu me dis que le nombre de colonnes est variable, j'avoue que cela dépasse un peu mes compétences dans les Arrays.

Ma proposition est codée pout transformer un tableau de N lignes * 3 colonnes en un tableau de N lignes * 6 colonnes. La proposition peut-être revue avec 2 colonnes supplémentaires. Dans tous les cas, il va falloir que tu gères le code VBA.

Ton nouveau fichier n'est pas passé.

Cdlt

Merci Jean Eric

faisant deux colonnes de plus (pièce jointe)

merci de m'expliquer sur quoi changer pour l'ajout des colonnes de plus

Donc, transformer 5 colonne ---> 8 colonnes

il est en pièce jointe mon fichier

RE,

Voir fichier modifié et code VBA commenté.

A te relire.

Cdlt.

Super!

Merci beaucoup JEAN ERIC

Rechercher des sujets similaires à "restructurer tableau tcd"