VBA coller transposé de plusieurs colonnes à la suite
Résolu
camcam1404
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
camcam1404 Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
camcam1404 Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
Voilà ce que j'aimerais obtenir:
a b c
e f g
a e b f c g
Pour cela j'ai écris le code suivant. Cependant il y a quelque chose qui ne va pas, quelqu'un pourrait m'aider. Je suis pas bonne en programmation mais j'y travaille.
Sub transposé()
Worksheets(2).Activate
Dim Firstline As Long
Dim Lastline As Long
Dim Column As Long
Dim NbrCol As Long
Dim Nbrline As Long
Dim Col As Long
Dim Firstcolumn As Long
Firstcolumn = 2
Firstline = 3
Lastline = 4
NbrCol = 3
Nbrline = 2
For Column = 2 To 4 Step 1
Range(Cells(Firstline, Column), Cells(Lastline, Column)).Select
Selection.Copy
For Col = Firstcolumn To NbrCol * Nbrline Step Nbrline
Cells(Lastline + 2, Col).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next Col
Next Column
End Sub
Voilà ce que j'aimerais obtenir:
a b c
e f g
a e b f c g
Pour cela j'ai écris le code suivant. Cependant il y a quelque chose qui ne va pas, quelqu'un pourrait m'aider. Je suis pas bonne en programmation mais j'y travaille.
Sub transposé()
Worksheets(2).Activate
Dim Firstline As Long
Dim Lastline As Long
Dim Column As Long
Dim NbrCol As Long
Dim Nbrline As Long
Dim Col As Long
Dim Firstcolumn As Long
Firstcolumn = 2
Firstline = 3
Lastline = 4
NbrCol = 3
Nbrline = 2
For Column = 2 To 4 Step 1
Range(Cells(Firstline, Column), Cells(Lastline, Column)).Select
Selection.Copy
For Col = Firstcolumn To NbrCol * Nbrline Step Nbrline
Cells(Lastline + 2, Col).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next Col
Next Column
End Sub
A voir également:
- VBA coller transposé de plusieurs colonnes à la suite
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Comment faire des colonnes sur word - Guide
- Style d'écriture a copier coller - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
1 réponse
Bonsoir,
Essayer ce code
Essayer ce code
--
Const Firstline As Long = 3
Const Lastline As Long = 4
Const NbrCol As Long = 3
Const Nbrline As Long = 2
Const Firstcolumn As Long = 2
Dim c As Long
For c = 0 To NbrCol - 1
Cells(Lastline + 2, Firstcolumn + c * Nbrline).Resize(, Nbrline).Value = Application.Transpose(Range(Cells(Firstline, Firstcolumn + c), Cells(Lastline, Firstcolumn + c)).Value)
Next c
Mon code était vraiment trop mauvais ? J'aurai bien aimé comprendre ce qui n'allait pas.
Une double boucle n'était pas vraiment nécessaire. Avec une simple boucle, il est plus facile de voir ce qui ne fonctionne pas.
Cette instruction : ne sélectionne qu'une cellule. Pour sélectionner une plage à partir d'une cellule, il faut utiliser la propriété resize :
= plage de 2 cellules sur 1 colonne et 2 lignes
= plage de 2 cellules sur 2 colonnes et 1 ligne
= plage de 4 cellules sur 2 colonnes et 2 lignes