EXCEL redistibuer les lignes en colonnes

Résolu/Fermé
nicool83 Messages postés 5 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 19 avril 2009 - 17 avril 2009 à 14:43
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 avril 2009 à 22:23
Bonjour,
Sous excel 2003, je cherche à redistribuer les info sur d'une ligne en une colonne tout en gardant pour chaque l'info de la première cellule, je m'explique, j'ai un tableau qui ressemble à ça:

nom1 12 25 27 98 2
nom2 54 78 2 21 877 87
...
et j'aimerais avoir:

nom1 12
nom1 25
nom1 27
nom1 98
nom1 2
nom2 54
nom2 78
nom2 2
nom2 21
nom2 877
nom2 87
...

c'est possible ou pas?? sachant que la fonction transposer n'a pas l'air de marcher dans ce cas...
aidez-moi s'il vous plait!!!! j'en peux plus!!!!
merci d'avance,
A voir également:

8 réponses

leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 130
17 avril 2009 à 15:07
Bonjour

voici un VBA à coller dans un module
Option Explicit
Sub MiseEnFormeColonne()
    Dim Départ, Final
    Dim LigneDépart, ColonneDépart, LigneFinal
    Set Départ = ActiveWorkbook.Sheets("Départ")
    Set Final = ActiveWorkbook.Sheets("Final")
    
    LigneDépart = 1: ColonneDépart = 2: LigneFinal = 1
    Do While Départ.Cells(LigneDépart, 1) <> ""
        Do While Départ.Cells(LigneDépart, ColonneDépart) <> ""
            Final.Cells(LigneFinal, 1) = Départ.Cells(LigneDépart, 1)
            Final.Cells(LigneFinal, 2) = Départ.Cells(LigneDépart, ColonneDépart)
            LigneFinal = LigneFinal + 1
            ColonneDépart = ColonneDépart + 1
        Loop
        ColonneDépart = 2
        LigneDépart = LigneDépart + 1
    Loop
End Sub


Selon la destination des données, il faut changer le nom des feuilles et les variables ligne et colonne.
0
nicool83 Messages postés 5 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 19 avril 2009 1
17 avril 2009 à 15:40
merci pour ta rapidité!!! really impressed!
mais je comprend pas trop ce que je doi changer, jsuis un peu neuneu, surtout en vba...
donc si je n'abuse pas trop de ta bonté pourrais-tu mettre en gras ce que je dois modifier,
parce que là j'ai essayé tel quel et ça me met "nom ambigu detecté : MiseEnFormeColonne"
donc si tu pouvais me donner quelque précisions quant à l'utilisation de ta macro, ça serait cool.
merci!
0
qmike Messages postés 1506 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 18 juin 2012 594
17 avril 2009 à 15:49
bonjour
une autre solution serait de transposer les lignes et les colonnes
voir ici
http://bvrve.club.fr/Astuces_Michel/02excel.html
bonne journée
0
nicool83 Messages postés 5 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 19 avril 2009 1
17 avril 2009 à 15:54
merci,
mais j'aimerais bien gardé l'info de la premiere cellule de chaque ligne pour chacunes des cellules suivantes.
et transposer ne permet pas ça, enfin ptet, enfin jsais pas...
0
leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 130
17 avril 2009 à 16:08
Re,

Dans mon code, j'ai une feuille de départ nommée "Départ" et une feuille pour le résultat final "Final"
    Set Départ = ActiveWorkbook.Sheets("Départ")
    Set Final = ActiveWorkbook.Sheets("Final")
Les titres sont en A1 de la feuille Départ et j'écris en A1 de la feuille Final :
les données sont donc en colonne 2 (titre en A et données en B, C...)
    LigneDépart = 1: ColonneDépart= 2: LigneFinal = 1
    Do While Départ.Cells(LigneDépart, 1) <> ""
    Final.Cells(LigneFinal, 1) = Départ.Cells(LigneDépart, 1)
    Final.Cells(LigneFinal, 2) = Départ.Cells(LigneDépart, ColonneDépart)
    ColonneDépart = 2

Si tu démarres en C5 par exemple et que tu écris en Z10 :
les données sont donc en colonne 4 (titre en C et données en D, E...)
    LigneDépart = 5: ColonneDépart= 4: LigneFinal = 10
    Do While Départ.Cells(LigneDépart, 3) <> ""
    Final.Cells(LigneFinal, 26) = Départ.Cells(LigneDépart, 3)
    Final.Cells(LigneFinal, 27) = Départ.Cells(LigneDépart, ColonneDépart)
    ColonneDépart = 4
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 avril 2009 à 17:42
Bonjour
a la bourre: coupures de courant suite à orage de grêle dans mon coin... j'ai recommencer n-2 fois (n=nombre de coupures)
ci joint proposition sans macro....
https://www.cjoint.com/?ethoxuPeCn
j'ai laissé volontairement en tableau intermédiaire pour la compréhension de la bête
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
qmike Messages postés 1506 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 18 juin 2012 594
17 avril 2009 à 17:46
oui mais en meme temps dupliquer un info n'est pas forcément necessaire même pour le calcul
0
arrial Messages postés 1753 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 décembre 2023 250
17 avril 2009 à 17:47
 





L'option transposer ne marche pas
► si on fait un "couper"
► si on essaie de coller en partie sur la zone copiées.

Tu dois donc
► "copier"
► "coller spécial transposé" plus bas
► supprimer la source …



Cela dit, la feuille n'étant pas "carrée", on ne peut pas toujours …



0
nicool83 Messages postés 5 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 19 avril 2009 1
19 avril 2009 à 20:45
Merci à tous!
dans un premier temps je vais opter pour la solution de michel!
même si dès que j'aurais plus de temps je me pencherais sur la marco de leplot.
en tout cas, merci beaucoup.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2009 à 22:23
bonjour-soir,

quand tu auras regardé ma proposition, fais signe car j'ai amélioré 2 ou 3 trucs (bugs dans prise en compte 5° ligne)
0