Eriiic,
la version-cellules fonctionnait parfaitement mais, beaucoup trop lente à mon goût, d'où les tableaux.
Le code suivant n'est que la transciption en tableau du même calcul.
For Z = IIf(iTurn = 1, iSpot, 2) To IIf(iTurn = 1, 43, iSpot - 1)
If CInt(tTab(Z, x)) = 1 And _
(CInt(tTab(Z + 1, x)) = 1 Or tTab(Z + 1, x) = "R" Or tTab(Z + 1, x) = "" Or CInt(tTab(Z + 1, x)) = 0) And _
tPerm(Z, IIf(iStart = 1, 1, 2)) = "" And _
tPerm(Z, IIf(iStart = 1, 2, 1)) <> tTab(1, x) And _
tPerm(Z - 1, 1) <> tTab(1, x) And tPerm(Z - 1, 2) <> tTab(1, x) And _
tPerm(Z + 1, 1) <> tTab(1, x) And tPerm(Z + 1, 2) <> tTab(1, x) And _
CInt(tCol(Z + 3, k)) <> 3 And CInt(tCol(Z + 3, k)) <> IIf(iStart = 1, 45, 6) Then
tPerm(Z, IIf(iStart = 1, 1, 2)) = tTab(1, x)
iStop = 1
iCpt = iCpt + 1
Exit For
End If
- si l'employé travaille = 1 ;
- si le jour suivant est un jour de travail ou de repos ou cellule vide (bande noire = fermé) ou cellule = 0 (pour éviter une permanence avant un des jours spéciaux d'autres couleurs (condition que j'ai ajoutée) ;
- si tPerm(même ligne, 1 (fermeture) ou 2 (ouverture) n'est pas encore affecté ;
- si l'horaire antagoniste même ligne ne LUI a pas déjà été attribué ;
- si il ne doit pas déjà faire une Perm le jour précédent et le jour suivant ;
- si sa couleur de cellule n'est pas Orange, jaune ou rouge :
ALORS, on l'affecte à cette permanence.
Dans un tableau vide, il me paraît difficile de ne pas trouver sa place, surtout les premiers servis.
Je crois que je vais dormir un coup. Demain, promenade au grand air avec les chiens : on s'y remet demain après-midi!
Merci de faire tourner vos neurones pour moi : ça repose!
A+