XL 2016 Table pyramidale

sly37

XLDnaute Nouveau
Bonjour la communauté,

Je travaille avec une 10aine de tables BDD réseau (OF, clients, produits, commandes, composants, achats, ...)
OF : ordre de fabrication

Un OF donné peut avoir des OF fils, et cet OF fils peut lui-même être le père d'un autre OF.
Donc j'ai une hiérarchie d'OF. (père, fils, petit-fils, petit-petit-fils, ...)
Jusqu'à une descendance max à 5 niveaux.
Attention, il s'agit d'une hiérarchie pyramidale.

Ma collègue aux achats souhaiterait avoir la liste de la descendance pour un OF donné.
En pièce jointe, j'ai mis un exemple simple de table avec explication du cas.
Par la suite, pour chaque OF trouvé correspond un produit, dans lequel il y a des composants pour lesquels elle souhaite voir les achats en cours, en retard ...

La source de donnée est une table dans Power Query (liée à la BDD) avec une colonne "OF père" et une autre "OF fils", comme dans l'exemple en pièce jointe.
L'idée est de saisir un n° d'OF (père), et PQ s'occupe de rechercher tous les OF de la descendance et de les mettre dans un tableau pour un post traitement.

J'ai bidouillé des copies de tables puis fusions de requêtes en cascade, ....
ça me parait compliqué, il doit bien y avoir un algo ou une astuce plus simple.

Merci d'avance pour aide.
 

Pièces jointes

  • OF pères-fils 2.xlsx
    82.2 KB · Affichages: 28

sly37

XLDnaute Nouveau
En dupliquant, fusionnant les tables dans power query, j'arrive à obtenir un tableau comme dans la pièce jointe.
Maintenant, comment lister en 1 seule colonne toutes les données du tableau A, B, C mais sans les doublons.
 

Pièces jointes

  • Résultat PQ.xlsx
    10.7 KB · Affichages: 7

sly37

XLDnaute Nouveau
Arf, ça marche mais ...
Lorsque l'on change rajoute des datas dans la table des OF alors la fusion de colonne ne fonctionne plus.
Il faut pile poil le même nombre de data.

Il faudrait que l'étape de fusion de colonne prenne l'ensemble des colonnes, quelque soit le nombre de colonnes.
Une idée.
 

Pièces jointes

  • sly37_V2.xlsx
    19.8 KB · Affichages: 5

sly37

XLDnaute Nouveau
Merci @Amilo,
Seulement je ne sais pas comment passer d'une table avec mes valeurs d'OF, à une liste de listes ???
J'arrive à créer une liste à partir d'une colonne.
Mais j'arrive pas à créer 1 liste par ligne et le tout dans une colonne comme tu l'as fait.
Pour info ma table (Tableau1) est en connexion uniquement.

Encore merci pour ton aide.
 

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
Seulement je ne sais pas comment passer d'une table avec mes valeurs d'OF, à une liste de listes ???
2020-12-21_13-19-16.jpg

Une fois que ton tableau est importé sous Power Query, tu modifies la commande Source et tu y ajoutes Table.ToColumns(................)

Normalement, tu n'es pas censé importer les données vers Excel puis les exporter vers Power Query, tu dois faire l'affaire pendant la première importation 🤔 🤔

Cordialement
 

sly37

XLDnaute Nouveau
En sois, j'ai une solution au problème d'origine qui fonctionne :
- je pars de ma table d'origine colonne1:"OF père", colonne2:"OF fils".
- des OF fils peuvent devenir OF père, ... etc .... jusqu'à 5 niveaux de descendance.
- j'ai dupliqué 4 fois la table d'origine.
- j'ai fusionné la table d'origine avec la dupliquée 1
- Puis j'ai dupliqué la table résultat avec la dupliquée 2,
- et cela 5 fois.
- Résultat, j'ai une table avec 6 colonnes : Père, Fils, petit-Fils, ....
- une fonction sur cette table avec un paramètre sur ma feuille principale pour la saisie de l'OF et sa famille recherchée.
=> tout fonctionne, mais les requêtes sont longues, trop longues. ~10 à 15 secondes de mise à jour
Je pense que ça peut être largement optimisé.

Peut-on imaginer une autre solution ?
Par exemple par une fonction en M avec une boucle FOR.
Malheureusement je ne maitrise pas ce langage. (le asm, C, C++, Python, oui, mais pas le M c'est un comble)
ou alors une fonction récursive !??

J'aimerai une solution qui évite de mettre à jour toutes ces tables que j'ai dupliqué.
Pour cela il faut travailler sur 1 table référence et 1 table "résultat".

Des idées ?
 

Discussions similaires

Statistiques des forums

Discussions
312 160
Messages
2 085 841
Membres
103 002
dernier inscrit
LERUS