Transformer un tableau

lilicoco

XLDnaute Nouveau
Bonjour

Je ne maitrise pas du tout le langage macro et j'ai besoin d'automatiser une tâche tres fastidieuse à effectuer manuellement.

Je souhaite transformer une matrice double entrées en un tableau simple

exemple

Presentation du Tableau d'origine
Col A Col B Col C Col D Col E
Lign 1 MARIE MARC LOUIS JEAN
210456 10 1 10 10
210457 2 1 2 2
210458 7 1 7 7
210459 12 1 12 12
210460 8 1 0 8


Structure du tableau de destination
210456 10 MARIE
210457 2 MARIE
210458 7 MARIE
210459 12 MARIE
210460 8 MARIE
210456 1 MARC
210457 1 MARC
210458 1 MARC
210459 1 MARC
210460 1 MARC
210456 10 LOUIS
210457 2 LOUIS
210458 7 LOUIS
210459 12 LOUIS
210460 0 LOUIS
210456 10 JEAN
210457 2 JEAN
210458 7 JEAN
210459 12 JEAN
210460 8 JEAN


Sachant que le nombre de cellules remplies en colonne A (210456 - 210457 ...etc ) ainsi que le nombre d'items (MARIE, MARC etc ) en ligne 1 sont variables.

Enfin je souhaite conserver le 1er tableau en Feuil1 et generer le second tableau en Feuil2.

D'avance mille mercis de votre aide
 

JNP

XLDnaute Barbatruc
Re : Transformer un tableau

Bonjour LiliCoco et bienvenue, salut Michel :),
A tester et à adapter
Code:
Sub Test()
Dim I As Integer, J As Integer, K As Integer
K = 1
For I = 2 To 5
For J = 2 To 6
Cells(K, 7) = Cells(J, 1)
Cells(K, 8) = Cells(J, 2)
Cells(K, 9) = Cells(1, I)
K = K + 1
Next J
Next I
End Sub
Bon WE :cool:
 

Tibo

XLDnaute Barbatruc
Re : Transformer un tableau

Bonjour,

Une tentative avec ceci :

En Feuil2, en A1 :

Code:
=SI(LIGNE()>(NBVAL(Feuil1!$A:$A)-1)*(NBVAL(Feuil1!$1:$1)-1);"";INDEX(Feuil1!A:A;
MOD(LIGNE()-1;NBVAL(Feuil1!A:A)-1)+2))
à recopier vers la droite en B1

en C1 :

Code:
=SI(LIGNE()>(NBVAL(Feuil1!$A:$A)-1)*(NBVAL(Feuil1!$1:$1)-1);"";INDEX(Feuil1!
$1:$1;ENT((LIGNE()-1)/5)+2))
Formules à recopier vers le bas

@+

Edit : Bing ! Salut Jean-Noël :)

@+
 

JNP

XLDnaute Barbatruc
Re : Transformer un tableau

Re :),
Corrigé avec ton fichier
Code:
Sub Test()
Dim I As Integer, J As Integer, K As Integer
K = 1
For I = 2 To 5
For J = 2 To 6
With Sheets("Feuil2")
.Cells(K, 1) = Sheets("Feuil1").Cells(J, 1)
.Cells(K, 2) = Sheets("Feuil1").Cells(J, 2)
.Cells(K, 3) = Sheets("Feuil1").Cells(1, I)
End With
K = K + 1
Next J
Next I
End Sub
Bon WE :cool:
Ajout : Salut Tibo
 
Dernière édition:

lilicoco

XLDnaute Nouveau
Re : Transformer un tableau

Superrrrrrrrrrrr

J'ai essayé la derniere proposition de JPN et c'est exactement ce que je souhaitais !!

Merci merci merci à tous !!! ce forum est formidable de part son existence, la qualité, et la rapidité des reponses .... Quel beau sens du partage !

Bravo et merci encore !

(Vous me reverrez ;) )
 

Discussions similaires

Statistiques des forums

Discussions
312 503
Messages
2 089 055
Membres
104 013
dernier inscrit
VELONDAHY Mickaël