XL 2010 Distribuer une liste de participants selon conditions

Réda1

XLDnaute Nouveau
Bonjour à tous,

Je suis débutant dans le VBA/Macros (amateur d'Excel, ayant toujours trouver le moyen de m'en sortir pas toujours avec des solutions optimales)

je me suis décidé de m'améliorer grâce à la communauté - au passage, Merci à vous tous pour tout ce que vous partager et qui sert à des millions -

Aujourd'hui, je vous soumets une problématique à la quelle je fais face (pour un novice), il s'agit de distribuer une liste de participants selon certains critères;

Concrètement, les participants ont accès à 3 ateliers étalés sur une journée, qu'ils peuvent choisir parmi une liste de 12

Chaque atelier à un nombre limité de participants

L'objectif est de proposer une macro pour automatiser la distribution des participants en fonction de leurs choix, en respectant les limites de places par atelier et éviter les redondances

Je me permets de joindre un draft en espérant que j'ai pu être clair pour décrire la problématique

Pour info, les candidats ont optés pour un choix 1, 2 et 3 mais l'ordre n'est pas important, on peut proposer le choix3 en atelier 1

Un grand merci a vous tous
 

Pièces jointes

  • Dsitrib.xlsx
    11.9 KB · Affichages: 10

yal

XLDnaute Occasionnel
serait-il possible plutôt que de supprimer, écraser et vider simplement les cellules du tableau
Voilà une version qui fait le job. Juste un bouton à cliquer. Cela reconstruit entièrement le tableau distribution mais c'est transparent.
J'ai testé avec mon listing de participants réels (143, 429 ateliers), j'ai 6 ateliers qui sautent 423 sont proposés
Pour comprendre ce qu'il se passe il me faudrait le fichier concerné, anonymisé si besoin.
 

Pièces jointes

  • Dsitrib yal v2-2.xlsm
    41.5 KB · Affichages: 2

Réda1

XLDnaute Nouveau
Voilà une version qui fait le job. Juste un bouton à cliquer. Cela reconstruit entièrement le tableau distribution mais c'est transparent.
Je teste et reviens vers vous
Pour comprendre ce qu'il se passe il me faudrait le fichier concerné, anonymisé si besoin.
Pour comprendre ce qu'il se passe il me faudrait le fichier concerné, anonymisé si besoin.
Je joins le fichier en question, la feuille distribution n'est plus supprimé bizarrement, seul le contenu qui est écrasé, mais toujours j'ai 6 choix qui sautent
Merci encore
 

yal

XLDnaute Occasionnel
Ben c'est normal. Il faut augmenter la capacité des ateliers I, J, K, F, et H pour que tout le monde soit servi. L'autre solution étant que ceux qui n'ont que deux altiers à leur planning choisissent dans les ateliers où il reste de la place. On les repèrent dans le tableau Distribution.
 

yal

XLDnaute Occasionnel
En complément une adaptation qui liste les participants non servis et les créneaux libres rassemblés en feuille distribution. Les ajustements peuvent se faire manuellement.
Oups, je viens de m'apercevoir d'une coquille. Donc voici la correction.
 

Pièces jointes

  • Dsitrib yal v3-1.xlsm
    51.3 KB · Affichages: 1
Dernière édition:

Réda1

XLDnaute Nouveau
Ben c'est normal. Il faut augmenter la capacité des ateliers I, J, K, F, et H pour que tout le monde soit servi. L'autre solution étant que ceux qui n'ont que deux altiers à leur planning choisissent dans les ateliers où il reste de la place. On les repèrent dans le tableau Distribution.
Merci pour le temps consacré à ma problematique

Je pense que le souci est ailleurs, je m'explique, j'ai 143 participants qui ont "fait" 3 choix d'ateliers donc 429 (tab_souhaits comme tu l'as nommée), aucun n'a que 2 ateliers, en lançant la "Distribution", j'ai 6 participants pour lesquels 1 ateliers saute respectivement, je me retrouve avec 423 enregistrements.

la "Distribution" devrait restituer le nombre fidel d'enregistrements en les affectant en fonction des contraintes taille atelier
 

yal

XLDnaute Occasionnel
Pas tout à fait.
Par exemple : le participant 1 a choisi les ateliers A, D, J. au moment de le caser en J il ne reste plus qu'un seul créneau en cr1 mais dans le créneau 1 le participant 1 est déjà à l'atelier D à ce moment là. Il reste bien un créneau pour l'atelier J mais il n'est pas compatible avec le planning déjà établi pour le participant 1. Donc on se retrouve avec un créneau vide et un participant non servi. A ce stade il faut voir à la main si on ne peut déplacer un ou plusieurs participants pour trouver la combinaison gagnante...
Je cherche s'il y a moyen de faire mieux que cela mais je suis assez sceptique.
 

Réda1

XLDnaute Nouveau
Pas tout à fait.
Par exemple : le participant 1 a choisi les ateliers A, D, J. au moment de le caser en J il ne reste plus qu'un seul créneau en cr1 mais dans le créneau 1 le participant 1 est déjà à l'atelier D à ce moment là. Il reste bien un créneau pour l'atelier J mais il n'est pas compatible avec le planning déjà établi pour le participant 1. Donc on se retrouve avec un créneau vide et un participant non servi. A ce stade il faut voir à la main si on ne peut déplacer un ou plusieurs participants pour trouver la combinaison gagnante...
Je cherche s'il y a moyen de faire mieux que cela mais je suis assez sceptique.
en fait, les participants choisissent des ateliers pas des créneaux, c'est ce que je voulait dire précédemment par peu importe l'ordre ou on propose l'atelier
La solution manuelle c'est ce que je veux éviter justement, sur une liste de 250 participants moyennant du bricolage formule+tableau de controle sur excel de proposer des solutions en presque 1h

Merci pour tous ses efforts, franchement top
 

Réda1

XLDnaute Nouveau
Bien sûr qu'il choisissent l'atelier et pas le créneau, c'est le programme qui leur affecte un créneau. Il n'empêche qu'à un moment donné il sont affectés à un créneau qui doit être libre.
On est d'accord, si je prend le meme exemple du participant1 (A,E,J), avec ta proposition on est bloqué certes par contre en maintenant l'atelier 1 en cr1 et on intervertit l'ordre des ateliers cr2 et cr3 la solution est viable (A,J,E)
 

Réda1

XLDnaute Nouveau
On est d'accord, si je prend le meme exemple du participant1 (A,E,J), avec ta proposition on est bloqué certes par contre en maintenant l'atelier 1 en cr1 et on intervertit l'ordre des ateliers cr2 et cr3 la solution est viable (A,J,E)
Autre chose que je relève, la dimension du tb_distribtion n'est pas bonne (Nb Lignes) = Total Nb Participants par ateliers (renvoi 145 lignes devrait renvoyer 154)
 

Réda1

XLDnaute Nouveau
Comme son nom l'indique il s'agit du tableau de distribution. Les créneaux non distribués n'y apparaissent donc pas. Le fait que la dimension vous surprenne n'implique pas forcément qu'elle soit fausse.
Ok, autant pour moi. J'ai une liste de base avec 429 enregistrements que je redistribue via une macro, qui me renvoie 423, certes ce qu'elle renvoie n'est pas faux mais cela ne répond pas au besoin
Toujours est il si automatiser de manière efficace/efficiente n'est pas possible d'après vous, je m'en remets à ma bonne vielle méthode

En tout cas merci encore
 

Discussions similaires

Réponses
2
Affichages
505

Statistiques des forums

Discussions
314 714
Messages
2 112 139
Membres
111 436
dernier inscrit
jibusigor