Regrouper plusieurs colonnes en une seule [Fermé]

Signaler
Messages postés
5
Date d'inscription
dimanche 16 février 2014
Statut
Membre
Dernière intervention
28 mai 2015
-
 ozy11 -
Bonjour,

j'ai besoin d'aide afin de regrouper plusieurs colonnes en une seule, et qui duplique les en-têtes dans une nouvelle colonne.
par exemple:

Originale
code 111 112 113 114
frs1 2500 1802 2600 32000
frs2 1900 8500 1890 450
frs3 7000 7950 8950 5850

Souhaitée


code 111
frs1 2500
frs2 1900
frs3 7000

code 112
frs1 1802
frs2 8500
frs3 7950

code 113
frs1 2600
frs2 1890
frs3 8950

code 114
frs1 32000
frs2 450
frs3 5850


Je vous remercie pour votre aide
A voir également:

6 réponses

Messages postés
53602
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
11 avril 2021
15 649
Il ne faut jamais recommencer une discussion pour poursuivre une même question, sinon on s'y perd ; et même si dans l'intervalle on s'est inscrit comme membre :-)
Messages postés
53602
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
11 avril 2021
15 649
Dans ton fichier réel, il y a combien de lignes et combien de colonnes ?
Le nombre de lignes par code est-il toujours le même ? et quel est-il ?
Parce que si c'est juste un tableau de 4 lignes et 5 colonnes, autant faire des copier-coller ... ce serait plus rapide et plus sûr !
Messages postés
5
Date d'inscription
dimanche 16 février 2014
Statut
Membre
Dernière intervention
28 mai 2015

Bonjour Raymond PENTIER,
dsl de répondre maintenant. Mon fichier est composé d'un tableau d'au moins 1600 colonnes sur 10 lignes. Et, je dois traiter un vingtaine fichiers de cette façon donc si je dois copier/coller ca me prendra une éternité. :-)
Merci
Messages postés
53602
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
11 avril 2021
15 649
Essayons :

Dans Feuil1, sélectionne ton tableau A1:BIN11 et définit le nom "MaBase".
Dans Feuil2, on utilisera la fonction INDEX, associée aux fonctions LIGNE et MOD, pour indiquer à Excel où coller les données extraites de "MaBase".
Ainsi la ligne de référence sera calculée par l'expression ENT(MOD(LIGNE()/12;12))+2
et la colonne de référence par MOD(LIGNE();12) ce qui donnera en colonne B la formule =INDEX(MaBase;MOD(LIGNE();12);ENT(MOD(LIGNE()/12;12))+2))
Et pour tenir compte des lignes multiples de 12 qui sont vides, on ajoutera une condition au départ, ce qui donne finalement =SI(A:A="";"";INDEX(MaBase;MOD(LIGNE(); 12);ENT(MOD(LIGNE()/12;12))+2))
La colonne A:A est plus simple à construire avec =INDEX(MaBase;MOD(LIGNE();12);1) qu'il faut compléter pour les lignes multiples de 12 vides, suivies d'une cellule affichant "Code", ce qui donne au final =SI(MOD(LIGNE();12)=0;"";SI(MOD(LIGNE();12)=1;"Code";INDEX(MaBase;MOD(LIGNE();12);1)))

https://www.cjoint.com/?DBrb2prLaNU

Cordialement.
Messages postés
5
Date d'inscription
dimanche 16 février 2014
Statut
Membre
Dernière intervention
28 mai 2015

C'est énorme merci bcp pour votre aide j'apprécie franchement.
Messages postés
53602
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
11 avril 2021
15 649
Heureux que ça te convienne.
Il y a certainement d'autres approches, avec les fonctions DECALER et ADRESSE par exemple,mais celle-ci est plus facile à comprendre, à partir du moment où on sait utiliser les fonctions INDEX et MOD ...

à la prochaine !
Bonjour Raymond PENTIER,

Je reviens vers vous parce que tout n'a pas fonctionner normalement. Je me suis rendu compte qu'à partir d'un certain niveau, il y a une répétition de données. J'ai donc essayé de réadapter l'index mais ça na pas marché.
Par conséquent, je me suis permis de mettre un exemplaire de mon fichier.

Ci-joint le lien ci-dessous.

Merci pour votre aide.




http://cjoint.com/?3Bwop2f4ZvH
Messages postés
53602
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
11 avril 2021
15 649
Tu as parfaitement raison : toutes les 144 lignes, c'est-à-dire 12*12, on retrouve les mêmes résultats. En effet la seconde partie de la formule en colonne B qui est ENT(MOD(LIGNE()/12;12))+2 donne comme résultats :
2 de la ligne 1 à la ligne 11
3 de la ligne 12 à la ligne 23
4 de la ligne 24 à la ligne 35
...
13 de la ligne 132 à la ligne 143
et de nouveau
2 de la ligne 144 à la ligne 155

J'ai donc repéré la cause, mais je n'ai pas trouvé le remède ! Désolé ...
Oui c'est exact! Ben, c'est déjà pas mal. Merci pour votre attention