Trnsfar mise en forme tableau Excel

Bonjour,

Je cherche une facon via VBA de faire un transfert de tableau excel dans un autre format.

Inverser les colonnes et les lignes mais en supprimant les lignes à 0

Le fichier ci-joint donns un exemple

Merci de votre aide

Sophie

Bonjour

Un essai à tester.

Pour ce qui est du tableau de droite qui " peut avoir d'autres lignes et colonnes ", il me faudrait un exemple du résultat attendu avec un tel tableau.

Cela te convient-il ?

Bye !

Bonjour

Je ne vois pas de fichier joint à ta réponse

Le tableau de gauche peut avoir plus de ligne et de colonne donc le tableau de droite aura plus de ligne

Oh Flute !

Le voici :

Bye !

Super c'est tout a fait ce que je cherchais

Question subsidiaire, si je veux mettre le resultat sur un Onglet TOTO alors que le tableau source est sur l'onglet TITI comment le faire apparaitre dans le code.

Bonsoir, Salut gmb ! [pas vu ta présence avant...]

Voilà une solution (j'ignore si elle est autre, etc.)

Sub TftTablo()
    Dim Tbl(), k%, n%, i%, entt, mois
    entt = Split("RESSOURCE MOIS CHARGE")
    With ActiveSheet
        With .Range("A1").CurrentRegion
            n = .Rows.Count - 1: k = .Columns.Count - 1
        End With
        mois = .Cells(1, 2).Resize(, k).Value
        ReDim Tbl(k)
        For i = 1 To k + 1
            Tbl(i - 1) = .Cells(2, i).Resize(n).Value
        Next i
        Application.ScreenUpdating = False
        .Range("A1").CurrentRegion.Clear
        With .Range("A1").Resize(, 3)
            .Value = entt
            .HorizontalAlignment = xlCenter
            .Interior.Color = RGB(84, 130, 53)
            With .Font
                .Color = vbWhite: Bold = True
            End With
        End With
        i = 2
        For k = 1 To UBound(Tbl)
            .Cells(i, 1).Resize(n).Value = Tbl(0)
            .Cells(i, 2).Resize(n).Value = mois(1, k)
            .Cells(i, 3).Resize(n).Value = Tbl(k)
            i = i + n
        Next k
        k = UBound(Tbl)
        With .Cells(2, 2).Resize(n * k, 2)
            .HorizontalAlignment = xlCenter
            .Columns(2).NumberFormat = "0.0"
        End With
    End With
End Sub

Bouton pour tester... le tft se fait sur place ! [mais il suffit de faire à une autre endroit si l'on veut..] J'ai laissé une copie du tableau d'origine en M1:... pour qu'on puisse rétablir et recommencer test si on souhaite.

Cordialement.

Bonjour MFERRAND

si je veux mettre le resultat sur un Onglet TOTO alors que le tableau source est sur l'onglet TITI comment le faire apparaitre dans le code.

Dans la nouvelle version ci-jointe, la macro se lance à partir de la feuille de destination. Son nom n'a aucune importance. En revanche, le nom de la feuille source intervient à la première ligne du code. Il faut donc le changer au besoin.

Et pour faire apparaître le code, il faut taper simultanément sur les touches Alt et F11

Bye !

Super merci pour l'aide apporté.

Bonne soirée

SophieB a écrit :

ma cellule de départ est S4 et non A1. Que dois je changer dans le code envoyé pour le VBA?

Tu remplaces la dernière ligne :

Sub Transformation()

    Set fs = Worksheets("Source")
    Set f = ActiveSheet
    dercol = fs.Range("A1").End(xlToRight).Column
    f.Range("A1").CurrentRegion.Offset(1, 0).ClearContents

    tablo = fs.Range(fs.Cells(1, 1), fs.Cells(fs.Cells(Rows.Count, 1).End(xlUp).Row, dercol))

par celle-ci :

tablo = fs.Range(fs.Cells(4, 19), fs.Cells(fs.Cells(Rows.Count, 4).End(xlUp).Row, dercol)

OK ?

Bye !

Bonjour

J'ai bien fais les modifs mais le resultat n'est pas bon.

Pourriez aider sur le calage?

Merci

Bonjour

Nouvelle version

Bye !

Merci

Bonne journée

Rechercher des sujets similaires à "trnsfar mise forme tableau"