Transformer un tableau

  • Initiateur de la discussion Initiateur de la discussion lilicoco
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

lilicoco

Guest
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
 
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 😎
 
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 🙂

@+
 
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 😎
Ajout : Salut Tibo
 
Dernière édition:
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 😉 )
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
11
Affichages
728
Retour