Macro transpose

Résolu
RDV18H Messages postés 5 Statut Membre -  
RDV18H Messages postés 5 Statut Membre -
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. WeaponEDGE
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  2. RDV18H Messages postés 5 Statut Membre
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  3. RDV18H Messages postés 5 Statut Membre
     
    Oui, c'est exactement cela
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Pour chaque ligne, tes 11 colonnes sont elles remplies?
      0
  4. RDV18H Messages postés 5 Statut Membre
     
    oui
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. RDV18H Messages postés 5 Statut Membre
     
    Oh, c'est génial

    Un très grand merci

    Bonne soirée
    0