Transposition d'un tableau par macro (lignes en colonnes)

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonsoir le Forum,
Malgré quelques recherches je n'ai pas réussi à trouver le moyen de transposer par macro un bloc de cellules (titres à gauche) vers une autre zone de la même feuille (titres en haut).
...
Par appui sur mon bouton vert, les lignes de la première zone, après un tri en ordre croissant, devraient passer en colonnes dans la deuxième zone.
Pouvez-vous me venir en aide ?
Créer une fonction INVERSE ?
Ci-joint un fichier montrant une amorce de ce que je désire afficher dans la deuxième zone.
Le tableau D2:D31 serait rangé en ordre croissant puis transposé en inversé à partir de la cellule E32.
Merci
Webperegrino
 

Pièces jointes

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transposition d'un tableau par macro (lignes en colonnes)

Bonsoir Le Forum,
Bonsoir Victor21,
Je viens d'essayer le code transposé dans mon fichier original : C'EST PARFAIT.
Grand merci pour cette réponse très rapide.

Je pense pouvoir trouver moi-même la partie TRI ... dans le genre "For ligne =2 To 26, tri ordre croissant cellules E à AC, NEXT ligne ".
Bonne nuit,
Webperegrino
 

Staple1600

XLDnaute Barbatruc
Re : Transposition d'un tableau par macro (lignes en colonnes)

Bonsoir

Sans passer par le copier/coller (mais aie on perd le format)

VB:
Sub a()
Dim t: t = [D2:AC27]
With Application
    .ScreenUpdating = False
    [E32].Resize(UBound(t), UBound(t)) = .Transpose(t)
End With
End Sub
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transposition d'un tableau par macro (lignes en colonnes)

Bonjour Le Forum,
Bonjour Victor21 [Patrick],
Bonjour Staple1600 [JM],

Merci pour cette deuxième solution.
Elle fonctionne tout aussi bien.
Celle de Patrick ne modifie pas le format non plus, mais cela n'a pas d'importance dans mon cas.

Il me reste une "ERREUR 1004" dans ma formultion ci-dessous.
Je vais fouiller dans mes notes ou sur le Forum pour trouver la bonne codification.

Merci à vous deux,
Et bien cordialement,
Webperegrino [Henri]

Private Sub CommandButton1_Click()
'Trier
For i = 2 To 27
Range("E & i:AC & i").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Next

'reporter
'Dim t: t = [D2:AC27]
'With Application
' .ScreenUpdating = False
' [E32].Resize(UBound(t), UBound(t)) = .Transpose(t)
'End With
Range("D2:AC27").Copy
Range("E32").PasteSpecial Paste:=xlPasteValues, Transpose:=True
End Sub
 

laetitia90

XLDnaute Barbatruc
Re : Transposition d'un tableau par macro (lignes en colonnes)

bonjour Webperegrino,Victor21,Staple:):)
si on veut garder le format,moins rapide que passer par un "tablo" mais pour si peu!!

Code:
Sub es()
Application.ScreenUpdating = False
Range("d2:ac27").Copy
 With Sheets(1).Range("e32")
 .PasteSpecial Paste:=xlPasteFormulas, Transpose:=True
 .PasteSpecial Paste:=xlPasteFormats, Transpose:=True
 End With
Application.CutCopyMode = False
End Sub

ps : bravo staple pour le passage a 11kg:D:D:D:D:D:D:D
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transposition d'un tableau par macro (lignes en colonnes)

Le Forum,
Staple1600 et Laetitia90,
Merci

Je suis déjà satisfait mais je me bats encore avec la formulation du tri qui ne fonctionne pas bien [fichier ci-joint] :

'Trier
For i = 2 To 27
Range("E" & i & ":AC" & i).Select

Selection.Sort Key1:=Range("E" & i), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Next
 

Pièces jointes

Staple1600

XLDnaute Barbatruc
Re : Transposition d'un tableau par macro (lignes en colonnes)

Bonjour Webperigrino, le fil

Histoire de saluer leti ;) (et de jouer avec mes Endives ;) )
VB:
Sub esalut_L()
With Feuil1
    .[D2:AC27].Copy
    With .[E32]
        .PasteSpecial Paste:=-4123, Transpose:=True
        .PasteSpecial Paste:=-4122, Transpose:=True
    End With
End With
End Sub

edition: désolé pour la faute de frappe
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transposition d'un tableau par macro (lignes en colonnes)

Le Forum,
Staple1600, Laetitia90,

Je vois que vous vous amusez bien avec ma requête !

J'ai corrigé .[A2:AC27].Copy
... en .[D2:AC27].Copy

et c'est tout bon aussi... du moins pour la transposition du tableau non trié précédemment par lignes.

Merci car vous m'instruisez beaucoup avec votre sympathique joute excel-"downloadienne française" !Bonne continuation donc,
cordialement,
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transposition d'un tableau par macro (lignes en colonnes)

Bonsoir Le Forum,
Chers amis,
Je viens vous donner ma solution : je viens de la trouver !
La macro ci-après fonctionne à merveille.
Merci encore pour votre soutien, principalement à Laetitia90, à Staple1600 et à Victo21.
A bientôt pour un autre défi sur le Forum,
Bien cordialement
Webperegrino

Sub TriBasGauche() 'tri liste b
Application.ScreenUpdating = False
'*** Tri des lignes ***
Dim i As Integer
For i = 2 To 31
Range(Cells(i, 5), Cells(i, 29)).Select
Selection.Sort Key1:=Cells(i, 5), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Next i

'*** Transpose les lignes en colonnes ***
With Feuil8 'Feuille ListB - Staple1600
.[D2:AC31].Copy
With .[E33]
.PasteSpecial Paste:=-4123, Transpose:=True
.PasteSpecial Paste:=-4122, Transpose:=True
End With
End With

' Range("D2:AC31").Copy 'Merci Victor21
' Range("E33").PasteSpecial Paste:=xlPasteValues, Transpose:=True

'Dim t: t = [D2:AC31] 'Merci Staple1600
'With Application
' .ScreenUpdating = False
' [E33].Resize(UBound(t), UBound(t)) = .Transpose(t)
'End With

'Application.ScreenUpdating = False ' Merci Laetitia90
'Range("d2:ac31").Copy
' With Sheets(1).Range("e33")
' .PasteSpecial Paste:=xlPasteFormulas, Transpose:=True
' .PasteSpecial Paste:=xlPasteFormats, Transpose:=True
' End With
'Application.CutCopyMode = False
Range("D1").Select
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
3
Affichages
281