Macro de transposition

Spaltung

XLDnaute Nouveau
Bonjour,

Depuis maintenant quelques heures, je découvre empiriquement les macro. Je crois avoir compris grossièrement le fonctionnement mais je n'arrive pas à réaliser une suite d'opérations. Notamment, je souhaite transposer des informations contenus dans les colonnes d'une feuille, vers les lignes d'une autre feuille. Ma difficulté est que je voudrais transposer les informations des colonnes 12 par 12. Autrement dit, prendre les 12 premières informations d'une colonne et les mettre sur une première ligne, les 12 secondes sur une deuxième ligne, et ainsi de suite (il y a en fait une troisième variable).
J'ai essayé de filtrer mes informations pour établir une macro pour un sujet, espérant par la suite que je puisse l'appliquer aux autres sujets. Mais il s'avère qu'excel retient la case exacte plutôt que la position dans mon tableau (lorsque les données sont filtrées).

Voila un extrait de ce que j'avais fait:

Sub TRANSPOSITION()

Sheets("Feuil2").Select
Range("E2:E13").Select
Selection.Copy
Sheets("Feuil3").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True


Comment puis-je faire pour qu'il applique cette transposition à l'ensemble de mes données? (j'ai cherché sur d'autres discussions, mais je n'ai rien trouvé de similaire).
Merci beaucoup pour votre aide.
 

Staple1600

XLDnaute Barbatruc
Re : Macro de transposition

Bonjour

EDITION : voici une version plus aboutie
Code:
Sub a_v2()
Dim i&
With Sheets(1)
    For i = 1 To .[E65536].End(xlUp).Row Step 12
    Sheets(2).[A65536].End(xlUp)(2).Resize(, 12) = _
    Application.Transpose(.Cells(i, "E").Resize(12))
    Next i
End With
With Sheets(2)
    .Rows(1).Delete
    With .[A1].CurrentRegion
        .Columns.AutoFit
        .Borders.LineStyle = xlContinuous
    End With
End With
End Sub




Voici une façon de faire

Code:
Sub a()
Dim i&
With Sheets(1)
For i = 1 To .[E65536].End(xlUp).Row Step 12
Sheets(2).[A65536].End(xlUp)(2).Resize(, 12) = Application.Transpose(.Cells(i, "E").Resize(12))
Next i
End With
End Sub
Test ok réalisé sur un classeur avec 2 feuilles
(en Feuille 1 : dans la colonne E des nombres de 1 à 12 qui se repétent jusqu'en E72
par exemple)

Résultat en Feuille2:
une ligne vide
puis 6 lignes contenant les chiffres de 1 à 12
(en colonnes A:L)

Je te laisse tester.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro de transposition

Re


Oui

Code:
Sub a_v2()
[COLOR=Green]'Déclaration variable i[/COLOR]
Dim i&
With Sheets(1) [COLOR=Green]' concerne le feuille 1[/COLOR]
    For i = 1 To .[E65536].End(xlUp).Row Step 12
[COLOR=Green]'de la 1ère ligne à la dernière non vide en colonne E[/COLOR]
[COLOR=Green]'on "sélectionne" les cellules par pas de 12[/COLOR]
    Sheets(2).[A65536].End(xlUp)(2).Resize(, 12) = _
   [COLOR=Green]' et on les "recopie" sur la feuille 2 en les transposant[/COLOR]
Application.Transpose(.Cells(i, "E").Resize(12))
    Next i
End With
With Sheets(2)
[COLOR=Green]'sur la feuille 2[/COLOR]
    .Rows(1).Delete[COLOR=Green] 'suppresion de la 1ère ligne vide[/COLOR]
    With .[A1].CurrentRegion
        .Columns.AutoFit[COLOR=Green] 'on ajuste la largeur des colonnes[/COLOR]
        .Borders.LineStyle = xlContinuous ' [COLOR=Green]on applique une bordure[/COLOR]
    End With
End With
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 301
Membres
104 092
dernier inscrit
karbone57