OVH Cloud OVH Cloud

Transposition verticale

4 réponses
Avatar
Eric \(C\)
Bonjour à tous et toutes,

J'ai un tableau avec des données écrites horizontalement (A1, B1, C1,
D1.....) sur environ 1000 lignes.

Y a-t-il un moyen de recopier ces données verticalement (A1, A2, A3 etc...)
sur 1000 colonnes (ou de transposer les données horizontales en données
verticales de manière automatique) ?
Je sais que le nombre de colonnes est inférieur aux nombres de lignes sous
Excel, mais peu importe : je ferai plusieurs tableaux avec des données
transposées verticalement s'il le faut.

Merci pour votre aide sur le sujet.

Eric (C)

4 réponses

Avatar
anonymousA
Bonjour,

Pour 1000 colonnes , il faudra que tu soies sur Excel 2007 sinon n'y
songes même pas. Autrement, je suppose que sous cette version ,
"Transposer" doit toujours exister.

A+

On 14 fév, 18:39, "Eric (C)" <Eric(C)@chello.glace.be> wrote:
Bonjour à tous et toutes,

J'ai un tableau avec des données écrites horizontalement (A1, B1, C1,
D1.....) sur environ 1000 lignes.

Y a-t-il un moyen de recopier ces données verticalement (A1, A2, A3 etc ...)
sur 1000 colonnes (ou de transposer les données horizontales en donné es
verticales de manière automatique) ?
Je sais que le nombre de colonnes est inférieur aux nombres de lignes s ous
Excel, mais peu importe : je ferai plusieurs tableaux avec des données
transposées verticalement s'il le faut.

Merci pour votre aide sur le sujet.

Eric (C)


Avatar
garnote
Bonsoir Éric,

Essaie ceci avec un petit tableau et dis-moi
si c'est le résultat que tu attends.
Sélectionne un petit tableau :
De A1 à C1 : 12 3 4
De A2 à C2 : 6 7 8

Sub transpose()
Dim nt()
Set ici = Selection
NL = ici.Rows.Count
NC = ici.Columns.Count
ReDim nt(1 To NC, 1 To NL)
For i = 1 To NL
For j = 1 To NC
nt(j, i) = ici(i, j)
Next j
Next i
ici.Delete
Range("A1").Select
Range(Cells(1, 1), Cells(NC, NL)).Value = nt
End Sub

Serge


"Eric (C)" <Eric(C)@chello.glace.be> a écrit dans le message de news: 1c77a$45d348ec$3ecd59bd$
Bonjour à tous et toutes,

J'ai un tableau avec des données écrites horizontalement (A1, B1, C1, D1.....) sur environ 1000 lignes.

Y a-t-il un moyen de recopier ces données verticalement (A1, A2, A3 etc...) sur 1000 colonnes (ou de transposer les données
horizontales en données verticales de manière automatique) ?
Je sais que le nombre de colonnes est inférieur aux nombres de lignes sous Excel, mais peu importe : je ferai plusieurs tableaux
avec des données transposées verticalement s'il le faut.

Merci pour votre aide sur le sujet.

Eric (C)



Avatar
garnote
Salut Éric,

Essaie celle-ci en sélectionnant un tableau
rectangulaire ne commençant pas forcément
en A1. Une fois le nouveau tableau obtenu,
il sera sélectionné, appelle à nouveau la macro.
Tu devrais retrouver le tableau initial.
Mais attention, si tu travailles par blocs, il faudrait
adapter la macro pour être sûr que des données
ne soient pas écrasées. Moi je vais Saint-Valentiner ;-)

Sub Transpose()
Set ici = Selection
NL = ici.Rows.Count
NC = ici.Columns.Count
ReDim nt(1 To NC, 1 To NL)
For i = 1 To NL
For j = 1 To NC
nt(j, i) = ici(i, j)
Next j
Next i
ici.Clear
Set tr = Range(ici(1, 1), ici(NC, NL))
tr.Select
tr.Value = nt
End Sub

Serge


"Eric (C)" <Eric(C)@chello.glace.be> a écrit dans le message de news: 1c77a$45d348ec$3ecd59bd$
Bonjour à tous et toutes,

J'ai un tableau avec des données écrites horizontalement (A1, B1, C1, D1.....) sur environ 1000 lignes.

Y a-t-il un moyen de recopier ces données verticalement (A1, A2, A3 etc...) sur 1000 colonnes (ou de transposer les données
horizontales en données verticales de manière automatique) ?
Je sais que le nombre de colonnes est inférieur aux nombres de lignes sous Excel, mais peu importe : je ferai plusieurs tableaux
avec des données transposées verticalement s'il le faut.

Merci pour votre aide sur le sujet.

Eric (C)



Avatar
garnote
Salut Éric,

Il va sans dire que le tableau que tu veux transposer
ne peut pas contenir plus de 256 lignes à moins que
tu sois 2007. Une dernière macro pour éviter
d'écraser malencontreusement des données.
Sélectionne un tableau rectangulaire
débutant en A1 et appelle cette macro :

Sub Transpose()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
NC = ici.Columns.Count
Set nf = Sheets.Add
For i = 1 To NL
Sheets("Feuil1").Activate
Range(Cells(i, 1), Cells(i, NC)).Copy
nf.Activate
Cells(1, i).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:=True
Next i
Range("A1").Select
End Sub


Serge



"Eric (C)" <Eric(C)@chello.glace.be> a écrit dans le message de news: 1c77a$45d348ec$3ecd59bd$
Bonjour à tous et toutes,

J'ai un tableau avec des données écrites horizontalement (A1, B1, C1, D1.....) sur environ 1000 lignes.

Y a-t-il un moyen de recopier ces données verticalement (A1, A2, A3 etc...) sur 1000 colonnes (ou de transposer les données
horizontales en données verticales de manière automatique) ?
Je sais que le nombre de colonnes est inférieur aux nombres de lignes sous Excel, mais peu importe : je ferai plusieurs tableaux
avec des données transposées verticalement s'il le faut.

Merci pour votre aide sur le sujet.

Eric (C)