OVH Cloud OVH Cloud

Transpositions de données en colonnes ... en lignes

17 réponses
Avatar
Seb
Bonjour à tous,

Je cherche un moyen de faire la manip suivante:

Article Outils
NH000001000001 ap
NH000001000001 sc1
NH000001000001 fp
NH000001000001 l6
NH000001000001 l8
NH000001000001 l12
NH000001000001 ft2
NH000001000001 pt2
NH000001000001 expbd
NH000001000001 dco
NH000001000001 dne
NH000001000001 dnm
NH000001000001 dmi
NH000001000001 pff
NH000001000002 ap
NH000001000002 fond
NH000001000002 s12
NH000001000002 sc1
NH000001000002 fp
NH000001000002 l6
NH000001000002 l8
NH000001000002 ft2
NH000001000002 cr52
NH000001000002 c20
NH000001000002 expt
NH000001000002 dsc
NH000001000002 dco
NH000001000002 dne
NH000001000002 dnm
NH000001000002 pff


Comme ceci:

NH000001000001 ap sc1 fp l6 l8 l12 ft2 pt2 expbd dco dne dnm dmi pff
NH000001000002 ap fond s12 sc1 fp l6 l8 ft2 cr52 c20 expt dsc dco dne
dnm pff



Comme j'ai 4000 articles comme ceux là, j'aimerai savoir si il existe un
moyen de transposer de la sorte des données initialement en colonnes, en
lignes.

Merci de votre aide

Sébastien

7 réponses

1 2
Avatar
Fredo P.
Pour rappel
De JB
J'avais juste à modifier un paramètre : remplacer
" For i = 2 to 30 " par "For i = 2 to 54776 "

"Francois L" a écrit dans le message de news:

Yessss, ça marche nickel

J'avais juste à modifier un paramètre : remplacer
" For i = 2 to 30 " par "For i = 2 to 54776 "
ps: 54776 : nbre de lignes de mon fichier.




Re,

OK, on aurait aussi pu s'épargner les macros et passer par un TCD, voir
http://cjoint.com/?kqggwJQVzT


--
François L



Avatar
Francois L
Pour rappel
De JB
J'avais juste à modifier un paramètre : remplacer
" For i = 2 to 30 " par "For i = 2 to 54776 "



Bonjour,

? tu veux dire quoi ?

--
François L

Avatar
Fredo P.
Pour rappel
De JB
J'avais juste à modifier un paramètre : remplacer
" For i = 2 to 30 " par "For i = 2 to 54776 "



Bonjour,

? tu veux dire quoi ?

Que JB commence son tri à la deuxième ligne



Avatar
Francois L

? tu veux dire quoi ?

Que JB commence son tri à la deuxième ligne



Re,

Il s'agissait de Sébastien et non pas de JB... et ma macro traitait bien
toutes les lignes, y compris la première, même si la boucle commençait à 2.

Sub transpose()
' Traitement ligne 1
Range("A1:B1").Copy Destination:=Range("C1:D1")
' Traitement des lignes suivantes
cpt = 1
j = 5
For i = 2 To 30
If Range("A" & i).Value = Range("A" & i - 1).Value Then
Cells(i, 2).Copy Destination:Îlls(cpt, j)
Else
cpt = cpt + 1
j = 4
Cells(i, 1).Copy Destination:Îlls(cpt, j - 1)
Cells(i, 2).Copy Destination:Îlls(cpt, j)
End If
j = j + 1
Next i
End Sub


--
François L


Avatar
Fredo P.
Effectivement autant pour moi ,dans ce cas ,il suffit de changer une ligne
Sub trans()
Dim L1#, L2#, plg As Range, i %
L1 = 1
While Cells(L1, 1) <> ""
i = i + 1
L2 = Application.Match(Cells(L1, 1), [A:A], 0)
Cells(i, 3) = Cells(L1, 1)
L2 = Application.Match(Cells(L1, 1), [A:A], 1)
Set plg = Range(Cells(L1, 2), Cells(L2, 2))
Range(Cells(i, 4), Cells(i, 4 + L2 - L1))
=Application.transpose(plg)
L1 = L2 + 1
Wend
End Sub
L
Avatar
Fredo P.
oups!
toujours sous la condition du tri par ordre croissant des deux colonnes.
Sub trans()
Dim L1#, L2#, plg As Range, i %
L1 = 1
While Cells(L1, 1) <> ""
i = i + 1
L1 =Application.Match(Cells(L1, 1), [A:A], 0)
Cells(i, 3) = Cells(L1, 1)
L1 = L1 + (L1 = 2)
L2 = Application.Match(Cells(L1, 1), [A:A], 1)
Set plg = Range(Cells(L1, 2), Cells(L2, 2))
Range(Range(Cells(i, 4), Cells(i, 4 + L2 - L1)).Address) Application.transpose(plg)
L1 = L2 + 1
Wend
End Sub
Avatar
Fredo P.

Il s'agissait de Sébastien et non pas de JB...
Avec Tunderbird le premier post de cette discussion est de JB à 18H55 le

suivant est de Seb à 19H04 . C'est ce qui m'a "gouré".

1 2