Macro transpose

Résolu
Bonjour,

Je n'arrive pas à réaliser une macro qui transpose en ligne en colonne
Mon fichier d'origine se présente ainsi :
Ligne 1 : intitulés des colonnes ident var1 var2 var3 ... var10

Le résultat que je cherche à obtenir est le suivant (tableau à 2 colonnes seulement)

Ligne 1 : Ident Var (intitulés des 2 colonnes)

Ligne2 : Ident1 var1
Ligne3 : ident1 var2
Ligne4 : Ident1 var3

Etc

Ligne12 : Ident2 var1 ....

J'ai fait une petite macro pour insérer des lignes blanches ==> ça marche
ensuite, je bloque

Mon fichier de départ

277193 99 99 99 99 15 21 99 99 24 25

Ce que je veux obtenir

277193 99
99
99
99
15
21
99
99
24
25

Quelqu'un pourrait-il m'aider ?

Merci beaucoup

5 réponses

  1. Oh, c'est génial

    Un très grand merci

    Bonne soirée
    0
    1. oui
      0
      1. Modérateur
        Ce code "transpose" tes données de la feuil1 à la feuil2.
        Tu peux adapter le nom des feuilles dans la macro :

        Sub TransposeEn2Col()
        Dim i As Byte
        Dim ident As String
        Dim Cel As Range, Plage As Range
        
        With Sheets("Feuil1") 'A ADAPTER
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
        End With
        For Each Cel In Plage
            With Sheets("Feuil2") 'A ADAPTER
                ident = Cel.Value
                For i = 1 To 10
                    .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0) = ident
                    .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0) = Sheets("Feuil1").Cells(Cel.Row, i + 1).Value 'A ADAPTER
                Next
            End With
        Next
        End Sub
        0
    2. Oui, c'est exactement cela
      0
      1. Modérateur
        Pour chaque ligne, tes 11 colonnes sont elles remplies?
        0
    3. Merci à tous les deux.
      Effectivement, la solution que tu proposes WeaponEDGE ne fonctionne pas.
      Comment faut-il que j'utilise split

      Encore merci
      0
      1. Modérateur
        Split ne te servirait pas dans ton cas. Il aurait été utile si toutes les données d'un identifiant avaient été dans une seule cellule.
        Toi, tu as 10 colonnes et tu n'en veux que 2. C'est bien ça?
        0
    4. En positionnant ta chaine en cellule A1 utilise la macro suivante :

      Sub test()
      X = 2
      Reste = Cells(1, 1)
      Suite:
      Coupure = InStr(Reste, " ")
      If Coupure <> 0 Then
      Info = Mid(Reste, 1, Coupure - 1)
      Cells(X, 1) = Info
      Reste = Mid(Reste, Coupure + 1)
      X = X + 1
      GoTo Suite
      End If
      End Sub


      Seule le dernier terme ne sera pas positionné.
      0
      1. Modérateur
        Salut,

        Je penses que c'est pas bon ce que tu proposes...
        2 choses :
        1- si j'ai bien compris, Cells(i, 1) ne contient que l'identifiant, les var sont sur les colonnes B, C, D etc...
        2- le goto n'est pas approprié, même dans le cas que tu décris. Il eu mieux valu utiliser Split et boucler après...
        0