DEFI MACRO : Transposition d'une colonne en plusieurs colonnes

alexjs

XLDnaute Nouveau
Salut à tous,
Je suis en train de plancher sur un petit problème avec excel :

J'essaie de transpose UNE colonne contenant une info répartie sur 3 lignes à chaque fois, à la suite (tout sur la même colonne), en plusieurs colonnes (autant de fois qu'il y a des multiples de 3)

ex:

A1
A2
A3
B1
B2
B3
C1
C2
C3
...

à transformer en


A1 B1 C1
A2 B2 C2
A3 B3 C3

Pensez vous qu'une macro est faisable, en se gardant la possibilité de changer le nombre multiple (ici 3) ? En effet j'ai 2500 lignes à traiter et je n'arrive pas à faire ce que je veux avec mon VBA

Merci à tous pour votre aide !

Alex
 

Pièces jointes

  • excel transposition colonne.xlsx
    28.7 KB · Affichages: 171
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : DEFI MACRO : Transposition d'une colonne en plusieurs colonnes

Bonsoir alexjs le forum
voilà ton fichier en retour cliques sur le bouton
a+
papou:)

EDIT: salut Pierrejean
 

Pièces jointes

  • excel transposition colonneV1.xlsm
    23.4 KB · Affichages: 415
Dernière édition:

david84

XLDnaute Barbatruc
Re : DEFI MACRO : Transposition d'une colonne en plusieurs colonnes

Re
En fait, je comptais voir ce que je pouvais te proposer mais je m'aperçois que ton exemple n'est pas assez explicite...D'ailleurs, quand je compare les propositions de pierrejean et de papou, les résultats ne sont pas les mêmes...et j'avais personnellement compris encore autre chose:confused:.
Si par exemple, tu as :
A1
A2
A3
B1
B2
B3
C1
C2
C3
D1
D2
D3
E1
E2
E3
F1

Que veux-tu donc récupérer ?
Personnellement, je penchais pour :
A1 B1 C1 D1 E1 F1 G1
A2 B2 C2 D2 E2 F2
A3 B3 C3 D3 E3 F3
Puisque
J'essaie de transpose UNE colonne contenant une info répartie sur 3 lignes à chaque fois, à la suite (tout sur la même colonne), en plusieurs colonnes (autant de fois qu'il y a des multiples de 3)
Mais maintenant je ne sais plus...
donc personnellement, je m'abstiens donc pour l'instant, en espérant que tu aies trouvé ton bonheur parmi les propositions présentes.
A+
 

Paritec

XLDnaute Barbatruc
Re : DEFI MACRO : Transposition d'une colonne en plusieurs colonnes

Salut David:) Pierrejean:), alexjs,
alors là oui en lisant ton post David oui j'ai un doute aussi, bref l'auteur de la demande va peut-être se manifester pour nous éclairer sur le résultat souhaité, car pour les 9 premières cellules l'explication et très claire , mais les suivantes on les mets ou comme tu penses à coté ou en dessous ce que je pensais perso
bref attendons donc un retour.
a+
papou:)
 

david84

XLDnaute Barbatruc
Re : DEFI MACRO : Transposition d'une colonne en plusieurs colonnes

Re papou:),
en attendant la réponse d'alexjs, je poste selon ce que j'ai compris.
2 possibilités :
Une en VBA :
Code:
Sub transpose()
Dim DerLigne&, Plage, i&, j&, l&, NbLigne As Byte, k As Byte
DerLigne = Range("A" & Rows.Count).End(xlUp).Row
Set Plage = Range("A2:A" & DerLigne)
Tablo = Range("A2:A" & DerLigne)
NbLigne = 3
Dim TabloTranspose
ReDim TabloTranspose(1 To (UBound(Tablo) + 1) / NbLigne, 1 To NbLigne)
j = 1
l = 1
    For i = 1 To (UBound(Tablo) + 1) / NbLigne
        For k = 0 To 2
        On Error Resume Next
            TabloTranspose(j, k + 1) = Tablo(k + l, 1)
        Next k
    j = j + 1
    l = l + NbLigne
    Next i
Range("F1").Resize(UBound(TabloTranspose, 2), UBound(TabloTranspose, 1)) _
= Application.transpose(TabloTranspose)
End Sub
L'autre en formules (qui peut-être traduite en VBA), à tirer vers la droite et le bas :
Code:
=SI(LIGNES($1:1)<=3;INDIRECT(ADRESSE(LIGNES($1:1)+(COLONNES($A:A)-1)*3+1;1));"")&""
Reste à savoir ce qu'alexjs veut vraiment.
A+
 

Pièces jointes

  • transposition colonne-1.xls
    76.5 KB · Affichages: 204

tototiti2008

XLDnaute Barbatruc
Re : DEFI MACRO : Transposition d'une colonne en plusieurs colonnes

Bonjour à tous,

C'est juste pour jouer avec ;)

en formule

Code:
=DECALER($A2;(COLONNE(A1)-1)*3;0)

Edit : et puis en VBA

Code:
Sub transpose2()
Dim Derligne As Long, i As Long, Colonne As Long, Ligne As Long
    Colonne = 5
    Derligne = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To Derligne
        Ligne = ((i - 2) Mod 3) + 1
        If Ligne = 1 Then Colonne = Colonne + 1
        Cells(Ligne, Colonne).Value = Cells(i, 1).Value
    Next i
End Sub
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
235