XL 2010 Transposer plusieurs colonnes en lignes sans perdre l'ordre de départ

RainLumos

XLDnaute Nouveau
Bonjour à toutes et à tous !

Je me rends compte que ce genre de message est récurrent, j'essaye de lire toutes les discussions similaire mais pour l'instant ça ne corresponds pas tout à fait donc je poste un nouveau message. si entre-temps je trouve une solution je supprimerais ;)

Voilà, ma demande est plutôt simple dans les faits : je souhaite mettre des cellules disposée en ligne sur plusieurs colonnes (en gros les unes derrière les autres) dans une seule colonne (les unes sur les autres) pour au final n'avoir qu'une seule colonne.
Ma méthode -archaïque- pour l'instant : J'insère le nombre de ligne nécessaire sous la ligne choisie, puis je copie mes cellules et je les transpose dans la colonne dédiée. Sur le papier c'est très simple

MAIS (car oui, il y'a un "mais", sinon je ne serais point ici T_T )

1) J'ai au moins 10 000 lignes à faire.
2) Dans mon tableau, une ligne = une "signature", qui consiste a avoir un des nom+prénom, parfois une adresse et surtout le nom d'une ou plusieurs institutions. Ce sont les institutions qui m’intéresse (et que j'ai déjà pré-triées pour enlever celle dont je ne veux pas mais je souhaite garder dans une première colonne la signature entière pour ne pas me perdre).
Ces institutions sont donc eclatées sur plusieurs cellules séparées, dans une ligne.

Exemple :

Une signature c'est ça : Laguionie, Damien; Iturralde, Thomas; Shaddix, Jacoby] Univ Montpellier, CNRS, CIRAD; 18 rue du temple ; 34090; Montpellier, France;

Pour l'instant dans mon tableau j'ai dans la 1ere colonne la signature, puis les institutions ce qui donne +/- ceci :

1Laguionie, Damien; Iturralde, Thomas; Shaddix, Jacoby] Univ Montpellier, CNRS, CIRAD, Montpellier, France;Univ MontpellierCNRSCIRAD
2Darmon, Gérard; Chabat, Alain] Univ Nimes, CNRS, CIRAD, Nimes, France;Univ NimesCNRSCIRAD

Dans mon tableau final je veux avoir dans une 1ere colonne la signature non triée et dans l'autre colonne juste les institutions que j'aurais laissé et que toutes ces celulles soient mise sur une colonne.

1Laguionie, Damien; Iturralde, Thomas; Shaddix, Jacoby] Univ Montpellier, CNRS, CIRAD, Montpellier, France;Univ Montpellier
Laguionie, Damien; Iturralde, Thomas; Shaddix, Jacoby] Univ Montpellier, CNRS, CIRAD, Montpellier, France;CNRS
Laguionie, Damien; Iturralde, Thomas; Shaddix, Jacoby] Univ Montpellier, CNRS, CIRAD, Montpellier, France;CIRAD
2Darmon, Alain; Chabat, Alain] Univ Nimes, CNRS, CIRAD, Nimes, France;Univ Nimes
Darmon, Alain; Chabat, Alain] Univ Nimes, CNRS, CIRAD, Nimes, France;CNRS
Darmon, Alain; Chabat, Alain] Univ Nimes, CNRS, CIRAD, Nimes, France;CIRAD
[td]
[/td] [td]

Du coup je suis preneuse de toute solution miracle qui me ferait gagner un peu de temps, même si je dois me mettre à python pour ça :lol:
Si je n'ai pas été assez claire n'hésitez pas à me le dire pour que j'essaie de vous éclaircir ma pensée.

Je joins une partie de mon fichier excel (complet il est trop lourd :( )

Merci d'avance a ceux qui prendront le temps de me lire :)

Bonne journée ! :)
 

Pièces jointes

  • FICHIER A MODIFIER_Incomplet.xlsx
    966 KB · Affichages: 7
Dernière édition:
Solution
Bonjour @Ikito,

C'est déja un merveilleux début pour moi, je te remercie !
Seulement, y'a t-il un moyen de mettre la colonne "B" de la feuille base dans une colonne différente dans la feuille transpose ?

En gros, que la colonne en jaune
Regarde la pièce jointe 1055440
Se place comme ceci. J'ai l'impression que c'est la partie la plus galère :/
Regarde la pièce jointe 1055442

Mais déjà je te remercie pour ta réponse (rapide qui plus est !)

C.
Non, pas de soucis, mais ce n'est pas ce que tu as demandé au début :)
La modification :
VB:
Sub transposer()

Set ws_base = Sheets("base")
Set ws_tr = Sheets("transpose")

NbLig = Application.WorksheetFunction.CountA(Range("A:A"))

Compteur = 1

For i = 1 To NbLig
j = 2
    ws_tr.Cells(Compteur, "A") =...

Ikito

XLDnaute Occasionnel
Bonjour,

Voir la macro ci-après :

VB:
Sub transposer()

Set ws_base = Sheets("base")
Set ws_tr = Sheets("transpose")

NbLig = Application.WorksheetFunction.CountA(Range("A:A"))

Compteur = 1

For i = 1 To NbLig
j = 2
    While ws_base.Cells(i, j) <> ""
    ws_tr.Cells(Compteur, "A") = ws_base.Cells(i, "A")
    ws_tr.Cells(Compteur, "B") = ws_base.Cells(i, j)
    j = j + 1
    Compteur = Compteur + 1
    Wend
Next

End Sub

Fonctionne si le tableau est structuré ainsi (pas de limitation dans le nombre de colonnes) :

1582039383496.png


Pour le nom des feuilles, la feuille avec les données brutes : "base", la feuille ou la transposition est faite : "transpose".

La macro doit être lancée depuis la feuille "base". Si ça pose problème, peut-être contourné.
 

RainLumos

XLDnaute Nouveau
Bonjour @Ikito,

C'est déja un merveilleux début pour moi, je te remercie !
Seulement, y'a t-il un moyen de mettre la colonne "B" de la feuille base dans une colonne différente dans la feuille transpose ?

En gros, que la colonne en jaune
base1.JPG

Se place comme ceci. J'ai l'impression que c'est la partie la plus galère :/
transpose2.JPG


Mais déjà je te remercie pour ta réponse (rapide qui plus est !)

C.
 

Ikito

XLDnaute Occasionnel
Bonjour @Ikito,

C'est déja un merveilleux début pour moi, je te remercie !
Seulement, y'a t-il un moyen de mettre la colonne "B" de la feuille base dans une colonne différente dans la feuille transpose ?

En gros, que la colonne en jaune
Regarde la pièce jointe 1055440
Se place comme ceci. J'ai l'impression que c'est la partie la plus galère :/
Regarde la pièce jointe 1055442

Mais déjà je te remercie pour ta réponse (rapide qui plus est !)

C.
Non, pas de soucis, mais ce n'est pas ce que tu as demandé au début :)
La modification :
VB:
Sub transposer()

Set ws_base = Sheets("base")
Set ws_tr = Sheets("transpose")

NbLig = Application.WorksheetFunction.CountA(Range("A:A"))

Compteur = 1

For i = 1 To NbLig
j = 2
    ws_tr.Cells(Compteur, "A") = ws_base.Cells(i, "A")
    While ws_base.Cells(i, j) <> ""
    ws_tr.Cells(Compteur, "B") = ws_base.Cells(i, j)
    j = j + 1
    Compteur = Compteur + 1
    Wend
Next

End Sub
 

RainLumos

XLDnaute Nouveau
Non, pas de soucis, mais ce n'est pas ce que tu as demandé au début :)
La modification :
VB:
Sub transposer()

Set ws_base = Sheets("base")
Set ws_tr = Sheets("transpose")

NbLig = Application.WorksheetFunction.CountA(Range("A:A"))

Compteur = 1

For i = 1 To NbLig
j = 2
    ws_tr.Cells(Compteur, "A") = ws_base.Cells(i, "A")
    While ws_base.Cells(i, j) <> ""
    ws_tr.Cells(Compteur, "B") = ws_base.Cells(i, j)
    j = j + 1
    Compteur = Compteur + 1
    Wend
Next

End Sub

@Ikito Je te prie de m'excuser, je pensais l'avoir demandé :) Tu es d'une grande aide, c'est parfait merci beaucoup ! Je remercie énormément pour ton aide ! Et si jamais tu as un peu de temps, j'adorerais que tu m'explique comment tu as fait pour qu'à l'occasion je puisse comprendre et le refaire de moi-même :)
 

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 854
Membres
102 688
dernier inscrit
Biquet78