Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…