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

XL 2016 Répartition équitable de binômes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

halecs93

XLDnaute Impliqué
Bonjour,

Je travaille toujours sur un fichier me permettant de répartir le plus équitablement possible des personnes. Le but étant de créer des binômes différents à affecter les samedis.

J'ai, je crois, pas mal avancé, mais je n'arrive pas à finaliser cet aspect "équitable".

Quelqu'un aurait une proposition plus fiable que la mienne ?

Un grand merci.

 

Pièces jointes

Solution
La macro avec 3 Dictionary :
VB:
Sub Tirages()
Dim tablo As Range, nNom%, delai%, dferie As Object, c As Range, dinterdit As Object
Dim d As Object, col%, r1%, r2%, txt$, rejet As Boolean, ecart%
Set tablo = [Tableau1] 'tableau structuré
nNom = tablo.Rows.Count
delai = 42 'au moins 42 jours avant de réutiliser un nom
'---jours fériés à éliminer---
Set dferie = CreateObject("Scripting.Dictionary")
For Each c In [feries]
    If Weekday(c) = 7 Then dferie(c.Value) = ""
Next c
'---binômes interdits---
Set dinterdit = CreateObject("Scripting.Dictionary")
For Each c In [Tableau5].Columns(1).Cells
    dinterdit(c & vbLf & c(1, 2)) = ""
    dinterdit(c(1, 2) & vbLf & c) = ""
Next c
Application.ScreenUpdating = False
Randomize
Set d =...
Grand merci.

Je vais conserver les deux versions et voir laquelle est la plus efficace à la longue.
 
Pour le bouclage sans fin signalé au post #30.

Il est dû bien sûr à la boucle Do/Loop et au fait que dans cette configuration des valeurs il n'est pas possible d'obtenir un écart égal à 1.

On pourrait facilement relancer automatiquement le processus pour obtenir une solution mais je trouve préférable de le faire manuellement après la touche <échap>.
 
Bonjour halecs93, le forum,

Bon il est évident * que quand nSam est multiple de nNom on ne peut pas avoir ecart = 1.

Donc au post #28 je viens de supprimer la ligne :
VB:
If nSam Mod nNom = 0 And ecart Then GoTo 1 'si nécessaire...

* j'explique quand même pour nSam = 51 qui est multiple de nNom = 17.

Pour ecart = 0 toutes les cellules de la plage DONNEES!B3:B19 contiennent 6.

ecart =1 est impossible car si des cellules sont égales à 7 (ou 5) le total ne sera plus 102.

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…