XL 2021 Classement Nomenclature - VBA

Raziel abel

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Je souhaite à travers une extractions d'une liste de références de pouvoir s'il existe une solution via une macro d'arriver au résultat que je décris ci-dessous avec fichier Excel en PJ.

Cette liste est une extraction de composants et sous composants.
Nous avons en colonne A, la référence chapeau à l'intérieur de laquelle nous avons d'autres références (colonne E)

Exemple 1 : La réf 6707708401 est composé de 5 références et au niveau de l'écriture de classement des sous-composants nous avons l'ordre écrit sous la Forme B001 à B005 ( 5 sous composants) Les 5 références sont sous l'INDENTURE 1 (colonne D)

Exemple 2 : Notre référence chapeau contient 43 références mais se répète sur 47 lignes.
Cela s'explique dans notre exemple par le fait, que des Sous-composants que nous avons en colonne E puissent eux-mêmes avoir des sous composants.

- Nous pouvons repérer cela grâce à l'INDENTURE en colonne D, via le chiffre 2 (ligne 44 excel).
En colonne B, n'est plus répétée la référence Chapeau, mais le sous-composant (SON) qui se trouvait en colonne E et nous avons ensuite le sous-sous composants en colonne E.

En exemple : Ligne 43 , réf 332A31197302 en COL B, INDENTURE 2 (qui peut aller jusqu'à INDENTURE 7 pour une nomemclature B-C-D.....à H en colonneL) indique que cette réf est le composant de la réf chapeau en A, et que cette même référence contient elle même une référence qui est la 1173077. Le résultat que nous souhaiterions avoir en colonne L est B033-C001. On reprend le B033 que nous avions en ligne 40 et nous donnons la lettre C ( car nous descendons d'un niveau) avec une incrémentation si nécessaire comme dans l'exemple de la référence en ligne 45, colonne B.

Ci-joint le fichier Excel pour un visuel pour accompagner la lecture de que je viens d'écrire plus haut.

Cordialement,
 

Pièces jointes

  • SPARE_breakdown_spécifications_test macro.xlsm
    30.8 KB · Affichages: 20

vgendron

XLDnaute Barbatruc
Questions

les indentures.. elles sont fiables??
parce que je vois lignes 28 et 29: qu'il s'agit des memes données.. la ligne est en doublon, pourtant tu continues l'incrémentation B022 B023

la colonne à prendre en compte pour un redémarrage à B001: c'est la colonne Root ou la colonne Father ?
 

Raziel abel

XLDnaute Occasionnel
Supporter XLD
Bonjour, et bien c'est la coquille...Comme j'ai fait cela à la mano, c'est la seule coquille identifiée.
Il faut supprimer l'une des deux lignes et corriger l'incrémentation en fonction.

C'est la colonne FATHER pour reprendre un redémarrage à B001 et lorsqu'on ajoute une autre sous nomenclature comme B010-C001 jusqu'à B010-C004 c'est l'indenture quand il passe à 2 ( et ainsi de suite) qui prends le "pas".

Cela veut dire dans notre exemple que :

332A31198006M contient
321026101511 ( Numéroté B010 en tant que sous composant de 332A31198006M)
qui contient 1311949 ( Numéroté B010-C001 en tant que sous composant de 321026101511)

J'espère que j'ai pu éclaircir via cette explication.


Cordialement,






En vous remerciant,
 
Dernière édition:

Raziel abel

XLDnaute Occasionnel
Supporter XLD
Hello

voici une proposition par Macro... à toi de faire tous les tests pour vérifer que ca donne bien le résultat attendu
Bonjour,

La macro fonctionne très bien jusqu'à deux indentures.
Ensuite, cela bloque au delà. Les indentures vont jusqu'à 6.

J'ai les données en entier si besoin dans le nouveau fichier.

Encore merci.
 

Pièces jointes

  • SPARE_breakdown_spécifications_test macro (3).xlsm
    268.7 KB · Affichages: 6

vgendron

XLDnaute Barbatruc
il y a un souci dès le départ je pense
1) il y a des tas de lignes en doublons==> Faut il les supprimer? ou les ignorer?
2) les données ne semblent pas triées.. si on fait un tri sur la colonne Root puis Father puis Son,, la logique des "Indenture" ne semble plus correcte.. quand on balaye les lignes triées, on passe d'un niveau 1 à 3 puis 3 puis re 2 puis 5..; ==> on pourrait s'attendre une des niveaux triés également...

en fait.. ce qui manque, c'est la logique de ces indentures... comment les as tu ecrites??
tout est fait à la main? ou c'est une formule? ou un logiciel..??

si on considère qu'un numéro de root = un numéro d'un produit
et que les numéros de Father = un numéro de Sous-système (un produit = plusieurs sous systèmes)
et que les numéros SON = un composant

est ce qu'un composant peut etre utilisé dans plusieurs SousSystème et ou produit??
 

Raziel abel

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Je vais essayer de répondre à toute vos questions.

1) Il ne faut pas ignorer les lignes en doublon. Si on prend la ROOT 330A32300003, nous pouvons voir que la réf 1153903 est le SON de la ROOT (le père des pères), il est aussi le SON de la réf 330A3200050182 (INDENTURE 2), il est aussi SON de la 330A3230010083 (INDENTURE 3) et dessus je vais prendre mon temps pour dévelloper quelques "arbres-exemples".

Exemples concernant la réf qui se trouve en doublon dans la colonne SON :

Description de l'arbre 1 via le sous-composant 330A3200050182 de la ROOT 330A32300003 :

La ROOT 330A32300003 a en SON 181 références en INDENTURE 1
Parmis ces 181 références certaines à l'intérieur de cet ensemble ont aussi des SON.

On prend l'exemple de la référence 330A3200050182 qui va se retrouver dans la colonne FATHER (ligne 184) en INDENTURE 2 (ou arborescence deuxième niveau de l'Ensemble ROOT 330A32300003).
En tant que Father il a 4 SON dont notre réf en "doublon"
1153903
Description de l'arbre 2 via le sous composant 330A3230010083 de la ROOT 330A32300003 :

La ROOT 330A32300003 a en SON 181 références en INDENTURE 1
Parmis ces 181 références certaines à l'intérieur de cet ensemble ont aussi des SON.

Mais dans cet exemple, on part de dernière branche jusqu'au tronc.

Nous avons la référence 1153903 en SON de la réf 330A3230010083 en INDENTURE 3,

La réf 330A3230010083 qui est lui-même SON de la réf 330A3230010397 en INDENTURE 2,

La réf 330A3230010397 qui est lui aussi le SON direct, Donc en INDENTURE 1, de la ROOT 330A32300003.

J'éspère que ça aide à la compréhension.

Sinon je reprends cet exemple, on te donnant le résultat escompté :)
 

vgendron

XLDnaute Barbatruc
Hello
je pense avoir compris la "structure" générale rechechée..

par contre, on a des écarts dans les nombres de lignes
tu dis que le root 330A32300003 possède 181 SON de niveau 1

moi, j'en vois 48...
peux tu vérifier??

sinon
si je ne me trompe pas pour UN numéro de Root, il faut
1) Filtrer sur le Root (ex: 330A32300003)
=> dans le fichier fourni; ca donne 1410 lignes
2) partir du niveau max (6) (il y a 14 lignes de niveau6)
pour chaque "SON" de niveau 6, on remonte jusqu'au root via les fathers

mais;. c'est la que ca coince
3) je prends le "SON" 1691857 de niveau 6 dont le père est 740710
==> je cherche 740710 dans la colonne SON
j'en trouve 4 de niveau 5
LA question: je prend lequel???

dans quel sens (Root vers Son ou Son vers Root) faut il prendre le fichier pour etre sur de reconstituer toutes les branches?
 

Raziel abel

XLDnaute Occasionnel
Supporter XLD
Hello vgendron,

C'est bien 48 lignes en indenture 1. Merci et bien vu.

Pour reconstituer le fichier, il vaut mieux le prendre dans le sens Root vers Son.
J'ai pris l'exemple de l'explication inverse pour tenter une autre approche explicative.

Dans le sens Root vers Son, c'est plus simple de descendre et de suivre les "ramifications".

En te remerciant,
 

vgendron

XLDnaute Barbatruc
Désolé,
mais je n'arrive pas à reconstituer une chaine complète...
que je parte du root ou du son, il y a toujours un moment ou la chaine s'arrete en cours de route..
avec des lignes en doublons et qui s'arretent au meme niveau..
 

vgendron

XLDnaute Barbatruc
Bon.. en reprenant la macro améliorée de l'autre fichier posté en MP (tu devrais le remettre ici aussi)

en supposant que l'extraction de TOUS les Root suivent la meme logique que celle du Root unique dans l'autre fichier
ca donne ceci

1) on extrait toutes les lignes d'un ROOT dans Tempo
2) on applique la macro (de l'autre fichier) améliorée
3) on colle le résultat dans la feuille "Finale"

et on boucle 1-2-3 sur tous les root
 

Pièces jointes

  • SPARE_breakdownToutNiveaux2.xlsm
    106 KB · Affichages: 12

Raziel abel

XLDnaute Occasionnel
Supporter XLD
Bon.. en reprenant la macro améliorée de l'autre fichier posté en MP (tu devrais le remettre ici aussi)

en supposant que l'extraction de TOUS les Root suivent la meme logique que celle du Root unique dans l'autre fichier
ca donne ceci

1) on extrait toutes les lignes d'un ROOT dans Tempo
2) on applique la macro (de l'autre fichier) améliorée
3) on colle le résultat dans la feuille "Finale"

et on boucle 1-2-3 sur tous les root
Hello,

J'ai fait plusieurs tests et cela fonctionne très bien.
Je vais encore en réaliser quelques uns ce soir et je reviendrai vers toi.

Encore merci à toi 🙏😃
 

Discussions similaires

Réponses
12
Affichages
315

Statistiques des forums

Discussions
312 213
Messages
2 086 302
Membres
103 174
dernier inscrit
OBUTT