Microsoft 365 Transposer lignes et colonnes

  • Initiateur de la discussion Initiateur de la discussion Niet
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 🙂
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
101
Réponses
16
Affichages
2 K
Réponses
10
Affichages
149
Retour