Microsoft 365 Transposer lignes et colonnes

Niet

XLDnaute Nouveau
Bonjour tout le monde !

J'espère que quelqu'un pourra m'aider ici, j'ai un grand tableau de données avec des réponses à un questionnaire.
Chaque ligne représente un répondant, et chaque colonne une de ses réponses. En gros mon problème est le suivant:

J'ai actuellement un tableau de ce type :
1mot A1mot B1mot C1mot D1
2mot A2mot B2mot C2
3mot A3mot B3mot C3mot D3mot E3
4mot A4mot B4mot C4mot D4
5mot A5mot B5mot C5

Il peut y avoir entre 1 et 10 mots par ligne. Je sais comment transposer simplement les lignes en colonnes et inversement, mais ce qu'il me faudrait surtout c'est une liste de tous ces mots, sur une seule colonne, mais sans perdre le numéro correspondant. Comme ceci :

1mot A1
1mot B1
1mot C1
1mot D1
2mot A2
2mot B2
2mot C2
etc ...etc...

Je suis super nul avec les tableaux croisés dynamiques, j'ai essayé et je suis arrivé à rien... Et je sais pas où trouver la solution dans la mesure où à chaque fois que je cherches des solutions de transpositions je trouve rien qui permette de faire concrètement ça...

Merci d'avance :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Niet, JHA,
Ou une solution en VBA avec :
VB:
Sub Worksheet_Activate()
    Dim NomFeuille$, NomCellule$, L%, i%, j%
    NomFeuille = "Feuil1"       ' Mettre ici le nom de la feuille concernée
    NomCellule = "A2"           ' Mettre ici la première cellule du tableau (en haut à gauche )
    [A:B] = ""                  ' Colonnes où sont rangées les infos
    Application.ScreenUpdating = False
    Tablo = Sheets("Feuil1").Range(NomCellule).CurrentRegion
    L = 1
    For i = 1 To UBound(Tablo)
        For j = 2 To UBound(Tablo, 2)
            If Tablo(i, j) <> "" Then
                Cells(L, "A") = Tablo(i, 1)
                Cells(L, "B") = Tablo(i, j)
                L = L + 1
            End If
        Next j
    Next i
End Sub
La macro est automatique quand on sélectionne la feuille Résultat.
 

Pièces jointes

  • Niet.xlsm
    15.5 KB · Affichages: 1

Niet

XLDnaute Nouveau
Bonjour Niet, JHA,
Ou une solution en VBA avec :
VB:
Sub Worksheet_Activate()
    Dim NomFeuille$, NomCellule$, L%, i%, j%
    NomFeuille = "Feuil1"       ' Mettre ici le nom de la feuille concernée
    NomCellule = "A2"           ' Mettre ici la première cellule du tableau (en haut à gauche )
    [A:B] = ""                  ' Colonnes où sont rangées les infos
    Application.ScreenUpdating = False
    Tablo = Sheets("Feuil1").Range(NomCellule).CurrentRegion
    L = 1
    For i = 1 To UBound(Tablo)
        For j = 2 To UBound(Tablo, 2)
            If Tablo(i, j) <> "" Then
                Cells(L, "A") = Tablo(i, 1)
                Cells(L, "B") = Tablo(i, j)
                L = L + 1
            End If
        Next j
    Next i
End Sub
La macro est automatique quand on sélectionne la feuille Résultat.
Merci beaucoup pour la réponse ! Perso je sais absolument rien faire avec le VBA mais ça aidera surement d'autres gens, je dois pas être seul au monde avec cette question
 

Discussions similaires

Réponses
16
Affichages
2 K

Statistiques des forums

Discussions
315 098
Messages
2 116 190
Membres
112 679
dernier inscrit
Yupanki