XL 2013 Recherche de combinaison

blond2comet

XLDnaute Nouveau
Hello all et merci d'avance pour votre précieuse aide

Je n'ai faitque très peu de VBA et cela remonte a fort longtemps maintenant et me voici bloquée.:confused:

J'ai un charmant fichier base article qui contient quelques 30000 refs. Le PIM est super mal fait et donc difficilement exploitable. .. je dois donc le retravailler

A chaque article correspond un certain nombre d'attributs. Chaque type d'attribut = 1 colonne (il y en a env. 200)
Je cherche une formule qui trouve les lignes qui ont les mêmes attributs non vides et pour chaque combinaison donne un nom (genre aa , ab, ac etc )

Le nec plus ultra serait que sur une 2e feuillê, je puisse automatiquement reporter: aa correspond a hauteur, longueur, diamètre renseignés

J'espère être claire, je vous mets un mini fichier excel en pj à titre d'exemple
 

Pièces jointes

  • Excel simulation pour création groupes attributs.xlsx
    8.6 KB · Affichages: 27
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Recherche de combinaison

Bonjour blond2comet,

Un essai dans le fichier (avec une codification différente de la votre et la légende sur la même feuille).
 

Pièces jointes

  • blond2comet- simulation pour création groupes attributs- v1.xlsm
    21.4 KB · Affichages: 17
Dernière édition:

blond2comet

XLDnaute Nouveau
Re : Recherche de combinaison

En fait, j'allais justement te poser la question... car tu as traité les colonnes avec une désignation code ASCII (limité à 255 caractères je crois) et il est malheureusement envisageable qui il y ait plus de 255 caractéristiques (ce fichier est dingue)...

A ce moment là, est qu'on peut récupérer le nom de la colonne ou n'importe quelle autre codification ? Le nom de la famille importe peu, le tout est de réussir à regrouper les refs en fonction des attributs complétés.

Merci mille fois pour ton aide.;)
 

ODVJ

XLDnaute Impliqué
Re : Recherche de combinaison

Bonjour à tous,

si le codage t'importe peu, je te propose de signer chaque enregistrement avec la formule :
Code:
=DECHEX(SOMMEPROD((B4:AK4<>"")*TRANSPOSE(2^(36-LIGNE($1:$36))));9)&DECHEX(SOMMEPROD((AL4:BU4<>"")*TRANSPOSE(2^(36-LIGNE($1:$36))));9)&DECHEX(SOMMEPROD((BV4:DE4<>"")*TRANSPOSE(2^(36-LIGNE($1:$36))));9)&DECHEX(SOMMEPROD((DF4:EO4<>"")*TRANSPOSE(2^(36-LIGNE($1:$36))));9)&DECHEX(SOMMEPROD((EP4:FY4<>"")*TRANSPOSE(2^(36-LIGNE($1:$36))));9)&DECHEX(SOMMEPROD((FZ4:GS4<>"")*TRANSPOSE(2^(20-LIGNE($1:$20))));5)
Les 200 attributs sont en B:GS.

Il s'agit de la conversion en hexa de la transcription binaire de 200 bits qui valent 1 si un attribut contient quelque chose et 0 sinon.
A cause des limites de la fonction DECHEX, j'ai saucissonné les 200 colonnes en 5 paquets de 36 et 1 de 20.
Un paquet de 36 bits devient un nombre hexa de 9 positions.

J'ai créé un fichier de 31 000 lignes sur 200 colonnes rempli aléatoirement à 30% par des nombres.
J'ai eu la mauvaise surprise de ne trouver que 3 doublons!!
J'espère que tes données seront plus "regroupables".

Les temps de réponses ne sont pas désespérants.
A toi de voir.

Cordialement
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Recherche de combinaison

Re :),

Un deuxième essai avec un grand nombre de colonnes. Pour 30 000 lignes et 200 colonnes, la macro prend environ 17 sec.

nota: à partir des 1000 lignes de données du fichier, CTRL+MAJ+L lance une macro qui initialise à 30 000 lignes de données.
 

Pièces jointes

  • blond2comet- simulation pour création groupes attributs- v2.xlsm
    756.4 KB · Affichages: 23
Dernière édition:

Statistiques des forums

Discussions
292 797
Messages
1 926 346
Membres
183 034
dernier inscrit
liverstone