convertir un tableau excel en liste "à plat" ( sorte de fonction "inverse" d'un TCD!)

PVO

XLDnaute Nouveau
Bonjour à tous,


Merci de me lire et de m'accorder un peu de votre temps et expertise.

J'ai un petit problème de traitement Excel. Je souhaite passer d'un tableau Excel impliquant 3 types d'éléments à une liste de triplets constitués de ces 3 éléments.

Le premier tableau (tableau 1) est constitué de la manière suivante :
en colonne, j'ai deux catégories d'éléments :
objet 1 | objet 2 | objet 3 | objet 4 | objet 5 | dispo 1 | dispo 2 | dispo 3 | dispo 4 | dispo 5

en ligne j'ai :
men 1
men 2
men 3
men 4
men 5

Le tableau 1 fait figurer une croix "X" entre les lignes et les colonnes lorsqu'il y a une correspondance entre "objet" et "men" d'une part et d'autre part entre "dispo" et "men".

Je souhaite construire à partir du tableau 1, un tableau 2 constitué des triplets ("objet", "men", "dispo") lorsqu'il y une correspondance entre ces éléments ("X") dans le tableau 1.

Contrainte : de préférence pas de macro Excel car la sécurité de mon entreprise ne privilégie pas les macro.
Information : je travaille avec Excel 2003 fr

Par avance merci pour votre contribution et votre aide.

Je joins un fichier Excel pour exemple.
 

Pièces jointes

  • test_1.xls
    21.5 KB · Affichages: 213
  • test_1.xls
    21.5 KB · Affichages: 240
  • test_1.xls
    21.5 KB · Affichages: 235

Softmama

XLDnaute Accro
Re : convertir un tableau excel en liste "à plat" ( sorte de fonction "inverse" d'un

Bonjour,

Ce que tu souhaites faire est réalisable. Le hic, c'est que cela me paraît extrêmement difficile sans macro. A moins qu'un formuleux chevronné relève le défi, je t'oriente plutôt vers une petite macro, qui elle, n'est pas difficile à mettre en place. Fais-moi savoir si une solution par macro peut être envisagée, je te ferai alors une proposition.

Cordialement.
 

PVO

XLDnaute Nouveau
Re : convertir un tableau excel en liste "à plat" ( sorte de fonction "inverse" d'un

des formules cela m'aurait franchement arrangé...mais bon s'il c'est plus simple avec une macro...je m'arrangerai avec la sécurité.

Par avance merci
 

Softmama

XLDnaute Accro
Re : convertir un tableau excel en liste "à plat" ( sorte de fonction "inverse" d'un

Re,

Donc, un exemple comme ceci :
VB:
Sub test()
Dim c As Range, d As Range, e As Range
Range("B22:D2000").ClearContents
Set c = [B5]: Set d = [G5]: Set e = [B22]
Do While Cells(c.Row, 1) <> ""
  For t = 0 To 4 '5 objets
    For u = 0 To 4 '5 dispos
        If c.Offset(0, t) = "X" And d.Offset(0, u) = "X" Then
            e = Cells(4, c.Offset(0, t).Column)
            e(1, 2) = Cells(c.Row, 1)
            e(1, 3) = Cells(4, d.Offset(0, u).Column)
            Set e = e(2, 1)
        End If
    Next u
  Next t
  Set c = c(2, 1): Set d = d(2, 1)
Loop
e.Sort key1:=[B22], order1:=xlAscending, key2:=[C22], order2:=xlAscending, key3:=[D22], order1:=xlAscending, Header:=xlYes
End Sub

Vois ton fichier en PJ.
 

Pièces jointes

  • test_1-1.xls
    38.5 KB · Affichages: 466

PVO

XLDnaute Nouveau
Re : convertir un tableau excel en liste "à plat" ( sorte de fonction "inverse" d'un

Je vous remerci beaucoup


Effetivement, c'est au pied du mur que l'on voit le maçon...mais ou est sa brouette et sa truelle.

encore une fois, je vous remercie. Je vais regarder votre fichier.
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 812
dernier inscrit
abdouami