Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tranposition de colonnes en lignes

  • Initiateur de la discussion Initiateur de la discussion GTA
  • 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 !

G

GTA

Guest
Bonjour,

N'étant pas expert dans le domaine, existe-t-il d'après vous une possiblité de transformer la présentation d'un tableau Excel de telle manière que les intitulés de colonne puissent devenir des intitulés en ligne ??

Et si oui, comment ?

Comme j'imagine que la question n'est pas suffisamennt précise, je joins un exemple AVANT/APRES

Merci pour vos réponses...

Cordialement,
 

Pièces jointes

Re : Tranposition de colonnes en lignes

Bonjour à tous ________________EDITION: Bonjour Efgé 🙂

GTA
Une suggestion:
Regardes en bas de pages (dans les Discussions similaires), si tu ne trouves pas matières à t'aider.
 
Dernière édition:
Re : Tranposition de colonnes en lignes

Bonjour GTA

Le problème a été soulevé ce matin......
https://www.excel-downloads.com/thr...gne-colonne-en-gardant-premiere-ligne.217142/

Même réponse.
VB:
Private Sub CommandButton1_Click()
Dim I&, J&, Rw&
Dim Data As Variant, Report As Variant

Const FrstRw = 1 'Première ligne du tablau de départ (3 dans l'exemple)
Const LstCol = 4 'Dernière colonne du tableau de départ (6 (F) dans l'exemple)

With Sheets("Avant") 'A adapter
    Data = .Range(.Cells(FrstRw, 1), .Cells(.Cells(Rows.Count, 1).End(3).Row, LstCol))
End With

ReDim Report(1 To (UBound(Data, 1) * LstCol), 1 To 3)
For I = LBound(Data, 1) + 1 To UBound(Data, 1)
    For J = LBound(Data, 2) + 1 To UBound(Data, 2)
        If Data(I, J)  "" And Data(I, J)  0 Then ' Si on ne veux pas des "vides"
            Rw = Rw + 1
            Report(Rw, 1) = Data(I, 1)
            Report(Rw, 2) = Data(1, J)
            Report(Rw, 3) = Data(I, J)
        End If ' Si on ne veux pas des "vides"
    Next J
Next I

With Sheets("Après")
    .Cells(FrstRw, 1).Resize(Rw, 3) = Report
    .Activate
End With


End Sub
Cordialement

EDIT Salut J.M désolé pour le télescopage
 

Pièces jointes

Re : Tranposition de colonnes en lignes

Merci pour vos réponses,

Par contre, comme je le disais, je ne suis pas exprt. Malgré tout, après quelques adaptations, cette macro fonctionne pour mon cas.
Par contre, comment faire en sorte de ne pas traiter les lignes vides et/ou à zéro ?

Merci encore,
 
Re : Tranposition de colonnes en lignes

Re
Les lignes vides ou = 0 ne sont pas triatées
Regarde le code dans le classeur, il y a défaut dans l'édition de mon poste:
Il faut lire
VB:
If Data(I, J) < >   "" And Data(I, J) < > 0 Then
A la place de
VB:
If Data(I, J)  "" And Data(I, J)  0 Then

Cordialement
 
Re : Tranposition de colonnes en lignes

Bonjour à tous

Efgé:
Tu permets qu'on joue ensemble 🙂 ?
Alors LetsGoBaby ! 😉
GTA: tu peux aussi entrer sur la piste en lancant la macro : LetsGoBaby

PS: Les après-midi sont long à occuper quand t'es cloué dans ta casa pour cause de maladie 🙄

Code:
Const FrstRw As Long = 1 'Première ligne du tablau de départ (3 dans l'exemple)
Const LstCol As Long = 4  'Dernière colonne du tableau de départ (6 (F) dans l'exemple)
Private Sub Transpotting_Not_Thefilm(Sws As String, Dws As String)
Dim I&, J&, Rw&, Data As Variant, Report As Variant

With Sheets(Sws) 'A adapter
   Data = .Range(.Cells(FrstRw, 1), .Cells(.Cells(Rows.Count, 1).End(3).Row, LstCol))
End With

ReDim Report(1 To (UBound(Data, 1) * LstCol), 1 To 3)
For I = LBound(Data, 1) + 1 To UBound(Data, 1)
    For J = LBound(Data, 2) + 1 To UBound(Data, 2)
        If Not IsEmpty(Data(I, J)) And Data(I, J) <> 0 Then  ' Si on ne veux pas des "vides"
           Rw = Rw + 1
            Report(Rw, 1) = Data(I, 1)
            Report(Rw, 2) = Data(1, J)
            Report(Rw, 3) = Data(I, J)
        End If ' Si on ne veux pas des "vides"
   Next J
Next I

With Sheets(Dws)
    .Cells(FrstRw, 1).Resize(Rw, 3) = Report
    .Activate
End With
End Sub

Code:
Sub LetsgGoBaby()
Transpotting_Not_Thefilm "Avant", "Après"
End Sub
 
Re : Tranposition de colonnes en lignes

Bonjour @ tous,
Si mes camarades de jeux me permettent de participer par des formules.. 🙂
Voir PJ

C'est comme l'autre fil, n'est ce pas FG ??? 😉

@ + +
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

J
Réponses
67
Affichages
6 K
J
J
Réponses
2
Affichages
1 K
jeremie42
J
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…