Mise en forme powerquery ou macro ?

Bonjour à tous,

Sur mon fichier excel j'ai une premiere feuille "feuille départ".

Sur la ligne 1 elle se présente ainsi :

En A des fruits

En B des prix

En C date de début

En D date de fin

Les prix, da de début et date de fin se répète aussi sur les lignes E, F, G et H, I, J ...

Dans mon exemple, ça se répète que sur ses colonnes là, mais il se pourrait que ça se répète autant de fois que possible et que ça continue sur les autres colonnes ... et toujours trois par trois. Prix, date de début, date de fin ... prix, date de début, da de fin ... etc .. etc ...

Il me faudrait une solution, soit avec des formules, ou en powerquery, avec des TCD, je ne sais pas trop, pour arriver à un résultat sur la deuxième feuille "feuille finale"

C'est à dire tout mettre sur 4 colonnes, A B C et D.

C'est à dire que les colonnes E F G ... H I J ... et ainsi de suite ... se mettent automatiquement en dessous, en colonne B C D qui corespondent aux prix, date de départ et date de fin.

Merci de votre aide.

Bonjour,

Une proposition VBA, car Power Query n'est pas (encore) disponible pour Mac.

ALT F8 et exécuter la procédure CreateTable.

Cdlt.

Public Sub CreateTable()
Dim wsData As Worksheet, wsTable As Worksheet
Dim lo As ListObject
Dim tbl As Variant, arr() As Variant
Dim r As Range
Dim I As Long, J As Long, k As Long

    Application.ScreenUpdating = False

    Set wsData = Worksheets("feuille depart")
    Set wsTable = Worksheets("feuille finale")

    Set lo = Range("Output").ListObject
    With Range("Output").ListObject
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set r = .InsertRowRange.Cells(1)
    End With

    tbl = wsData.Cells(1).CurrentRegion
    For I = 2 To UBound(tbl)
        For J = 2 To UBound(tbl, 2) Step 3
            ReDim Preserve arr(4, k + 1)
            arr(0, k) = tbl(I, 1)
            arr(1, k) = CDbl(tbl(I, J))
            arr(2, k) = tbl(I, J + 1)
            arr(3, k) = tbl(I, J + 2)
            k = k + 1
        Next J
    Next I

    If k > 0 Then
        r.Resize(k, 4).Value = Application.Transpose(arr)
        With lo
            .Sort.SortFields.Add Key:=.ListColumns(1).DataBodyRange
            .Sort.SortFields.Add Key:=.ListColumns(3).DataBodyRange
            .Sort.Header = xlYes
            .Sort.Apply
            .Sort.SortFields.Clear
        End With
    End If

    With wsTable
        .Activate
        .Cells(1).Select
    End With

End Sub

Bonjour Jean Eric,

Merci de la réponse

J'ai une version de excel sur windows aussi, donc powerquery ce n'est pas un probleme pour moi. Cela dit ça m'arrange aussi.

Merci.

Up

Bonjour,

la proposition Power Query attendue.

Cdlt.

10ngynvn.xlsx (18.70 Ko)
Rechercher des sujets similaires à "mise forme powerquery macro"