Attribution de classe selon tri multi-données

Bonjour à tous,

J'ai un fichier sur lequel je travaille qui me pose pas mal de problèmes.

Je travaille avec deux feuilles : une feuille de données, et une feuille "Classes". Sur la feuille donnée, j'ai des numéro d'articles, associés chacun avec les magasins dans lesquels ils sont utilisés. Un même article peut être utilisé dans plusieurs magasins différents.

J'aimerai associer à chaque couple article_magasin une classe qui est pré-définie à l'avance dans la feuille "Classes".

Seulement certaines classes sont prioritaires devant d'autres, donc si un article est utilisé dans un magasin de la classe 1 et dans un magasin de la classe 2, alors on lui attribue la classe 1 puisqu'elle est prioritaire sur la classe 2.

Cette priorité est donnée par la colonne "Grade" de la feuille "Classes". Le grade le plus important est le 1, puis 2 , ...

Un exemple de traitement :

Spoiler

L' article n° 111 est utilisé dans les magasin 811 ; 812 ; 822 et 831.

La répartition des classes se fait comme suit :

Magasin :

n°811 | Classe 1 | Grade 1

n°812 | Classe 1 | Grade 1

n°813 | Classe 1 | Grade 1

n°821 | Classe 2 | Grade 2

n°822 | Classe 2 | Grade 2

n°823 | Classe 2 | Grade 2

n°824 | Classe 2 | Grade 2

n°831 | Classe 3 | Grade 3

Les magasins 811 et 812 appartiennent tous deux à la classe 1, le 822 à la classe 2, et le 831 à la classe 3.

Comme la classe 1 a le grade le plus important, alors à chaque fois que l'article n°111 apparaîtra dans la liste de données il lui sera attribué la classe 1.

J'ai réussi à faire un code en dur à base de For et If, qui vérifient les différentes variables que je viens de vous donner et attribue correctement les classes.

Cependant si une classe est modifiée (changement de magasin, de grade, ...), ou même une nouvelle classe est ajoutée, alors dans ce cas je dois refaire tout mon code.

J'aimerai avoir une macro qui s'adapte, en utilisant donc les classes définies dans la feuille "Classes".

C'est sur ce point que je demande votre aide, puisque je tourne en rond depuis plusieurs heures...

Je met un fichier test en pièce jointe.

Merci par avance pour votre aide !

Très bonne journée,

Vikto.

8simplifie.xlsm (26.05 Ko)

Bonjour,

pas tout compris (ça m'arrive souvent ...)

mais:

quand tu écris un début de boucle IF - While - For et faut TOUJOURS écrire la fin de boucle de suite Endif - Wend - Next et puis insérer les nouvelles lignes entre ces 2 "balises"...

Pour le reste, je laisse aux autres le soin de chercher aussi, car là je suis dans la semoule

ps: le VBA est il réellement ce qu'il faut utiliser dans ce cas ? ....

ps2: il aurait été pas mal que tu mettes un résultat "à la main" pour savoir ce que tu désires

P.

Bonjour Patrick,

Tout d'abord merci pour ta réponse.

Je n'ai pas fait gaffe mais la macro que j'avais dans le fichier joint était un test que je n'avais pas terminé de faire.

Je met ci-dessous un nouveau fichier avec une macro qui fonctionne et donne le résultat que je souhaite, mais qui n'est pas "modulable" comme je voudrais qu'elle le soit.

Je donne un nouvel exemple de traitement qu'il est possible de retrouver dans ce nouveau fichier, en espérant être un peu plus clair cette fois-ci :

Spoiler

Je prends l'exemple de l'Article possédant le numéro 115 (on peut filtrer dans la feuille données la colonne B sur cet article pour comprendre plus facilement).

L'article 115 est utilisé au sein du magasin n°822, et du magasin n°831. Il apparaît donc deux lignes dans ma base de données.

Les colonnes C à J me permettent d'identifier le nombre de fois où un article est utilisé dans un des magasins.

Dans la feuille "Classes", on voit que le magasin n°822 appartient à la 2ème classe, et que le magasin n°831 appartient à la 3ème classe.

Comme la 2ème classe a un grade plus important que la 3ème, dans ce cas c'est elle qui l'emporte.

J'associe donc à mon article le fait qu'il appartienne à la Classe 2, car je le rappelle il est utilisé dans le magasin n°822 qui l'a emporté sur le n°831.

Je reporte donc l'appartenance de l'article à cette Classe 2 à chaque fois qu'il apparaît dans la liste "Données".

7simplifie2.xlsm (27.35 Ko)

Le résultat auquel j’aimerai arriver est le suivant :

Pour chaque article présent dans la feuille "données", si une classe ne lui a pas encore été attribuée, alors la macro regarde d'abord dans quels magasins il est utilisé.

Elle identifie la classe à laquelle appartient chaque magasin qui l'utilise grâce au tableau de la feuille "Classes".

Elle sélectionne la classe qui a le grade le plus important (exemple grade 1 est plus fort que grades 2 et 3, ...)

Elle reporte cette classe à chaque ligne où apparaît cet article, dans la colonne L intitulée "Classe".

re,

je passe la main, sorry

mais ceci dit, ton code fonctionne il semble , que veux tu de plus ?

P.

re,

je passe la main, sorry

mais ceci dit, ton code fonctionne il semble , que veux tu de plus ?

P.

Pas de soucis !

En effet ce code fonctionne mais il s'applique normalement sur un fichier de plusieurs dizaines de colonnes et milliers de lignes. Il est donc beaucoup plus long, et il est possible que certains paramètres changent (que de nouveaux magasins ou de nouvelles classes apparaissent, ...)

A chaque fois que cela arrivera, je devrai modifier des dizaines de paramètres du code, ce qui est plus que gênant...

C’est pour cela que j'ai détaillé juste avant ce à quoi j'aimerai arriver, et que je tente de développer depuis hier :

Spoiler

Le résultat auquel j’aimerai arriver est le suivant :

Pour chaque article présent dans la feuille "données", si une classe ne lui a pas encore été attribuée, alors la macro regarde d'abord dans quels magasins il est utilisé.

Elle identifie la classe à laquelle appartient chaque magasin qui l'utilise grâce au tableau de la feuille "Classes".

Elle sélectionne la classe qui a le grade le plus important (exemple grade 1 est plus fort que grades 2 et 3, ...)

Elle reporte cette classe à chaque ligne où apparaît cet article, dans la colonne L intitulée "Classe".

Ce qui me pose le plus de soucis là dedans c'est cette partie :

La macro identifie la classe à laquelle appartient chaque magasin qui l'utilise grâce au tableau de la feuille "Classes".

Elle sélectionne la classe qui a le grade le plus important (exemple grade 1 est plus fort que grades 2 et 3, ...)

Je ne vois pas du tout comment faire ce multi-check et cette prise de décision. Je ne peut pas affecter de variables puisqu'il peut y avoir un magasin qui utilise cet article (donc une variable), comme il peut y en avoir 10...

Rechercher des sujets similaires à "attribution classe tri multi donnees"