Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Attribution valeur aléatoire dans une liste sans doublons.

Zhavina

XLDnaute Nouveau
Bonjour,
Je travail dans une boite avec les lignes de productions possédant chacune plusieurs postes de travail.
J'aurais besoin de pouvoir attribuer à chaque membre de mon équipe un poste de façon aléatoire sans que 2 personnes ait le même poste évidemment.
Petite difficultés supplémentaire : il faudrait que les premiers postes de la ligne soient attribués en priorité, s'ils sont utilisables.

Exemple :
Jour 1 : J'ai la ligne 1 qui possède 20 postes. Je dois y placer 10 personnes. Je voudrais que les 10 personnes soient placés aléatoirement uniquement sur les 10 premiers.
Jour 2 : Le poste 3 de la ligne 1 est inutilisable suite à un soucis matériel et j'ai cette fois 6 personnes à placer. Je voudrais les placer aléatoirement sans que personne ne soit sur le poste 18 19 20 mais non plus sur le 3 qui est inutilisable.

Je vous ais joint en pièce jointe un exemple de ce à quoi ressemble mon fichier.

Je comprend les fonction alea.entre.bornes et index.
Sauf que la fonction index, quand il n'y a pas de données dans une case, affiche une valeur 0. Ce qui fait que si la fonction tombe sur une case vide, un des membre de mon équipe n'aura pas de poste attribué.

Merci beaucoup pour votre aide.
 

Pièces jointes

  • ExemplePosteAlea.xlsx
    13.8 KB · Affichages: 8

FlamXYZ

XLDnaute Nouveau
Bonjour,
selon la structure de tes données dans le fichier, pourrais tu nous expliquer la relation qu'il y'a entre ligne et jour ?
y 'a t il une ligne de production spécifique à utiliser pour une journée?
est ce que ce sont tous les postes de travail de chaque lignes qui sont utilisés pour une journée? en d'autre termes tous les postes de travail doivent ils être occupés? si oui, je note 131 postes existant contre 51 personnes.

cdt
 

Zhavina

XLDnaute Nouveau
Bonjour,

Alors mon équipe est bien plus grande que celle de mon exemple. Et avec les absents qu'il peut y avoir de façon aléatoire, chaque jour je n'ai pas le même nombre de personne.
Je dispose de beaucoup plus de poste de travail que de personne de mon équipe, ce qui est normal. Je n'ai encore jamais rempli la totalité de mes postes.

Du coup non, tout les postes ne sont pas obligé d'être utilisés, mais je voudrais que ceux utilisés soient les premiers dans la liste.
Etant donné que de la marchandise tombe sur chacune des 9 lignes, toutes les lignes sont utilisable (mais pas forcément utilisées) tout les jour.
Je ne met par exemple personne entre les ligne 5 et 6 en ce moment, d'où le fait que je n'ai pas mis les postes sur la ligne 5 à gauche et la ligne 6 à droite car je ne veux pas qu'ils soient attribués. Mais cela peut changer lors des grosse périodes (par exemple Noël qui arrive). Auquel cas je les rajouteraient dans la liste.

Je ne sais pas si cela est assez clair.
En tout cas merci pour ton aide.
 

FlamXYZ

XLDnaute Nouveau
RE

Ok;

Y'a t il un nombre minimum d'affectation pour chacune de ces 9 lignes?
Y'a t'il des lignes à prioriser? si oui selon quels critères?

En somme quelles sont tes règles d'affectation? car si nous procédons de manière linéaire, nous pourrions avoir plusieurs lignes avec des postes vacants.

cdt
 

Zhavina

XLDnaute Nouveau
Alors du coup je vais entrer un peu plus dans les détails.

En effet certaines lignes ont des affectations particulières. Pour simplifier on va dire que j'ai 4 types de marchandises A B C D.

La lignes 1 reçoit la marchandise A
Les lignes 2 et 3 reçoivent la marchandises B
La ligne 4 reçoit la marchandise C
Et les lignes 5 6 7 8 9 reçoivent la marchandises D

Le traitement de ces différentes marchandise demande des qualifications particulières. Certaines personnes ne peuvent pas traiter certaines marchandises (les nouvelles recrues), d'autre peuvent tout savoir traiter (les vétérans).

J'ai déjà réussi à affecter des "occupations" aux personnes ayant les bonnes qualifications.
Ensuite on en revient à ce que je cherche à ajouter pour que le tout soit automatisé ( cf : J'aurais besoin de pouvoir attribuer à chaque membre de mon équipe un poste de façon aléatoire sans que 2 personnes ait le même poste évidemment.
Petite difficultés supplémentaire : il faudrait que les premiers postes de la ligne soient attribués en priorité, s'ils sont utilisables.)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Soyons clair.
Voudriez vous affecter en W2:W51, dans un ordre aléatoire, les 50 premières valeurs renseignées de la plage A2:Q21, explorée de gauche à droite (pour utiliser en priorité les débuts de lignes) puis de haut en bas ?
 

Zhavina

XLDnaute Nouveau
Exactement, de haut en bas pour prioriser le début des lignes, sans prendre en compte les postes inutilisables (cases vides).
 

Zhavina

XLDnaute Nouveau
Merci Dranreb.

Ca m'a l'air d'être ce que je cherche à réaliser.
Il semble que tu ais utilisé une macro pour cela. Serait-il possible que tu m'explique comment elle fonctionne pour que je puisse m'en resservir concrètement. ?
 

Zhavina

XLDnaute Nouveau
Ok, je suis de retour.

J'ai pas mal étudié ton code Dranreb et j'arrive à en comprendre à peu près le fonctionnement. Suffisamment du moins pour pouvoir le modifier selon mes besoins.

Maintenant j'aimerais y ajouter une dernière chose.
Comme expliqué plus haut certain membre de mon équipe ne peuvent pas être positionné à certains poste à causes de manque de qualifications.

Par exemple s'ils ne savent traiter que la marchandise A, ils n'iront que sur la ligne 4 et 5. S'il ne savent faire que la B ils iront sur la 6 7 8 9.
Et s'ils savent faire les deux, ils seront aléatoirement positionné sur les lignes 4 5 6 7 8 9.
Ces qualifications sont affichés dans une colonne dans mon fichier, comme ça je peux les filtrer en fonction de leur qualifications. (Comme dans le fichier en PJ)
En sachant qu'ils savent faire au minimum soit A soit B.

Pourrais-tu m'aider sur ce dernier points ?
 

Pièces jointes

  • ListeAléatAB.xlsm
    35.6 KB · Affichages: 3

FlamXYZ

XLDnaute Nouveau
salut Zhavina , salut Dranreb,
je joins un autre fichier avec Macro qui pourrait être une seconde alternative pour l'affectation aléatoire sans prise en compte des types de marchandise et des qualifications.

@Zhavina, pourrais-tu construire une matrice dans laquelle on pourrait voir les qualification requise pour chaque ligne d'une part, et les qualifications de tes agents d'autre part?


cdt
 

Pièces jointes

  • ExemplePosteAlea.xlsm
    37.5 KB · Affichages: 4

Zhavina

XLDnaute Nouveau
Re FlamXYZ

Merci pour ta version qui est plus visuelle que ce que j'avais imaginé au départ.
Je regarderai comment tu as fais tout ça demain, il se fait tard ^^

J'ai néanmoins mis en PJ les ajouts de ce que tu demandais. En espérant que cela soit suffisant.
C'est comme cela que procède pour savoir qui est qualifié où, mais il y a peut être d'autre façon de faire.

Encore merci et bonne nuit =)
 

Pièces jointes

  • ListeAléatABC.xlsm
    35.9 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonjour.
Pas vu de changement dans les données sur quoi baser une modification du tirage, en particulier pas de colonne correspondant à votre description :
Ces qualifications sont affichés dans une colonne dans mon fichier
Le commentaire ajouté dans mon code n'est pas bon. C'est plutôt :
VB:
         If TDon(L, C) <> "" Then 'S'il y a quelque chose dans la cellule alors...
            N = N + 1: If N > NMax Then Exit For '… il va produire ce prochain N, s'il en reste.

Édition: Vu maintenant deux colonnes à droite. Je vais tenter de les exploiter …
Mais je vois que je ne vais pas savoir comment l'exploiter: je ne vois pas à quoi correspondent A et B.

J'ai vu le dernier classeur joint ABC. Je croyais qu'il répondais seulement à @FlamXYZ … il répond un peu plus à la question, mais pas clairement. Il faudrait une seule lettre au dessus de chaque colonne.
Ou bien un nombre puissance de 2: 1, 2 ou 4. En face des noms la somme de ces compétences, par exemple 7 pour indiquer qu'il est compétent pour 1 + 2 + 4.
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…