Bonsoir
Il y a effectivement beaucoup de possibilités, mais je ne sais exactement quelle est la plus facile à programmer, et la plus rapide...
Depuis mon dernier post, hier, j'ai un peu "travaillé". Cf. le résultat en pièce jointe.
On a toujours dans H1, le nombre max de permanences à effectuer par chaque bénévole, 4 par exemple (valeur que tu peux changer bien sûr).
Le principe de la macro :
* Cellule D3.
Excel tire au hasard un nom dans la liste des noms.
Si le bénévole choisi est de permanence ce jour là, donc déjà marqué sur la ligne en cours, dans une des autres colonnes rouges,
ou s'il n'est pas disponible,
ou s'il a déjà 4 permanences à effectuer
Excel tire de nouveau au hasard un nom dans la liste des noms
Sinon, Excel écrit dans D3 ce nom
* Cellule D4
Idem
* Cellule D5
Idem
* etc
Une fois la colonne rouge D remplie, on passe à la colonne F, puis à la H et ainsi de suite.
Donc on remplie le tableau colonne rouge par colonne rouge. Plus la macro avance, plus elle doit effectuer des tirages pour trouver un bénévole non déjà nommé sur la ligne en cours, disponible, et n'ayant pas déjà 4 permanences à effectuer. J'ai donc mis un nombre d'essais max de 1000. Si Excel n'a pas trouvé de nom adéquate au bout de ces 1000 essais, la cellule reste vide et Excel passe à la cellule rouge en dessous. Par conséquent, on peut avoir parfois des cellules vides.
Conditions à respecter :
* Rien d'écrit dans la colonne A en dessous du dernier nom
* Première date dans B3
* une ligne blanche, et une seule, au dessus de la ligne lun, mar, mer, jeu... (95 dans le fichier ci-joint).
Si tu veux plus de jours, il faut insérer ces lignes à partir de la ligne 95.
Pour tester, j'ai mis tous les bénévoles indisponibles le 18/09, sauf les bénévoles J, K et L. Ca fonctionne : On n'a que ces trois noms sur la ligne 18 correspondant à cette date (mais pas forcément les trois).
Il ni a plus de formule dans cette feuille, sauf dans D1.
Teste, par ex avec H1 = 5, tu verras, ça tourne beaucoup plus vite qu'avec des formules un peu partout, comme dans les versions précédentes, et on obtient le nombre max de permanences assurables systématiquement. Si la répartition ne te convient pas, il te suffit de relancer la macro, et 2 secondes après, tu as une nouvelle possibilité.
@ plus
P.S : Si cela t'intéresse, je peux très facilement modifier la macro pour avoir un nombre max de permanences variant en fonction de chaque bénévole, 3 pour l'un, 4 pour l'autre...