Académique Documents
Professionnel Documents
Culture Documents
Ce tutoriel propose un algorithme pour distribuer des tâches entre bénévoles en répartissant
les appels de manière équitable.
- les zones de liste dans un formulaire fils pour lesquelles le choix se restreint selon
l'enregistrement actif du père et les choix déjà opérés dans un formulaire « frère » ;
Il s'adresse à des utilisateurs expérimentés : seules les parties techniques un peu délicates
sont expliquées en détail.
Pour réagir au contenu de cet article, un espace de dialogue vous est proposé sur le forum
Commentez
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
I - Le contexte de l'exemple........................................................................................................................................3
I-A - Chaque volontaire a proposé ses disponibilités, ainsi que ses desiderata................................................... 3
I-B - Ce que l'on veut réaliser................................................................................................................................6
II - Le raisonnement pour affecter les tâches « équitablement »................................................................................7
III - Le modèle de données......................................................................................................................................... 7
IV - Les références utiles............................................................................................................................................ 9
V - Le formulaire fVolontaires......................................................................................................................................9
VI - Le formulaire fAffectations..................................................................................................................................13
VI-A - Présentation............................................................................................................................................... 13
VI-B - Particularités techniques............................................................................................................................15
VII - Le formulaire fAffecter....................................................................................................................................... 19
VIII - La routine AffectationsDuJour ().......................................................................................................................19
VIII-A - La structure..............................................................................................................................................20
VIII-B - Le code.................................................................................................................................................... 20
VIII-B-1 - Sub RecalculDesRangs()................................................................................................................ 20
VIII-B-2 - Sub CreerLaStructureDuJour()....................................................................................................... 21
VIII-B-3 - Sub SelectionDeLaPaireDeCandidats().......................................................................................... 22
VIII-B-4 - Sub ElectionDeLaPaire().................................................................................................................24
VIII-B-5 - Sub ReportPourPauseSuivante().................................................................................................... 28
VIII-B-6 - La fonction RespectDesContraintesDuVolontaire().........................................................................29
IX - Téléchargement.................................................................................................................................................. 30
X - Remerciements.................................................................................................................................................... 30
-2-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
I - Le contexte de l'exemple
Le but est de disposer d'un programme qui établit le rôle de garde en répartissant les appels de volontaires de manière
équitable : c'est-à-dire sans donner systématiquement la priorité à ceux qui sont souvent disponibles et négliger l'offre
de celui qui ne peut venir qu'un jour, une semaine sur deux.
I-A - Chaque volontaire a proposé ses disponibilités, ainsi que ses desiderata
-3-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Ces données ne sont pas figées : ce sont celles en vigueur au moment où on lance le programme qui va établir le
rôle de garde pour une période à venir.
-4-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Les deux doivent commencer et terminer aux mêmes pauses, les jours où ils viennent
ensemble.
Ces deux contraintes peuvent être différentes, mais, si à cause de ces contraintes,
l'obligé n'est pas sélectionné, la candidature du dépendant ne sera pas retenue.
Le dépendant ne peut exprimer cette contrainte : c'est celle de l'obligé qui sera prise en
considération (pour garantir qu'ils terminent leur prestation ensemble). Cette case s'allume
en rouge si elle est remplie.
Dans la réalité, il se pourrait qu'il n'y ait pas de volontaire disponible pour une pause.
Dans tVolontaires, nous avons ajouté deux volontaires fictifs (Joker) qui seront alors élus à
coup sûr : ils sont « candidats » pour toutes les pauses et sans restriction :
-5-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Nous verrons plus loin qu'il s'affichera en rouge pour attirer l'attention de l'utilisateur sur cette
lacune à combler.
-6-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
C'est la somme
- du nombre des pauses pour lesquelles il est candidat et
- le nombre de pauses pour lesquelles il a effectivement été sélectionné dans le passé.
Donc plus un candidat propose ses services et plus il a été choisi pour prester, plus son rang est élevé.
Pour choisir l'effectif d'une pause, le programme d'affectation donne la priorité aux deux candidats qui ont le plus petit
rang : on privilégie ainsi ceux qui ont été moins souvent élus !
Si un élu est aussi candidat pour la pause suivante de la journée, il devient prioritaire pour celle-ci. (Ceux qui sont
déjà sur place et qui sont candidats sont élus d'office.)
Le programme vérifie que les volontaires qui dépendent d'un autre (Simenon/Maigret) sont élus simultanément et
que deux exclus mutuels (Hemingway/Arnothy) ne forment pas la paire retenue.
Quatre tables :
-7-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Les colonnes Rang et RangJour sont calculées dynamiquement, elles servent à gérer l'ordre de priorité lors de
l'attribution des rôles. Idem pour MotifRejet qui mentionnera pourquoi le candidat n'a pas été retenu.
-8-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
V - Le formulaire fVolontaires
-9-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Si l'utilisateur introduit un nom qui ne fait pas partie de la liste, ce message s'affiche :
Voici le code qui est exécuté lorsque le choix n'est pas dans la liste :
fait appel à la fonction StatutDuCandidat pour afficher s'il s'agit d'un volontaire « ordinaire », « dépendant » ou
« obligé ».
- 10 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
La zone de liste propose les volontaires autres que lui-même et les jokers :
- 11 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
La zone de liste propose les volontaires autres que lui-même, les jokers et ceux qu'il a désignés comme covolontaire
obligé :
- 12 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
End Sub
Un clic sur l'un de ces boutons remplit ou vide toutes les cases à cocher.
VI - Le formulaire fAffectations
VI-A - Présentation
- 13 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
.
Un « obligé » peut être sélectionné seul
Ces couleurs résultent de la mise en forme conditionnelle du contrôle txtRetenu dans le sous-formulaire sfPause :
L'espace réservé à chaque pause permet de voir les deux volontaires qui ont été retenus.
Dans chacune des 28 pauses affichées, un clic sur le bouton permet d'afficher les candidats non
retenus ainsi que le motif de non-sélection :
- 14 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
On utilise pour cela la technique mise au point par Arkham46 dans cette contribution.
- 15 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Les contrôles [txtDate1] à [txtDate7] ont une source qui se réfère au contenu de [txtDateDepart] , le seul contrôle
auquel l'utilisateur a accès.
- 16 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
C'est donc la mise à jour d'un seul contrôle [txtDateDepart] qui déclenche l'affichage des 28 équipes sélectionnées.
Les deux boutons servent à ajouter ou retrancher 7 jours à la date saisie dans [txtDateDepart].
Le code du clic sur le bouton d'un des 28 sous-formulaires sfPause mérite le détour (une des
acrobaties annoncées dans le synopsis) :
Commentaires du code
e e
3 : si l'utilisateur a cliqué sur le bouton de la 2 ligne, 2 colonne, alors Me.Parent.ActiveControl.LinkMasterFields
correspond au texte marqué d'une flèche
- 17 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
- 18 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Il permet d'établir le rôle des volontaires en renseignant une date à venir et une durée.
- de supprimer dans la table tAffectations tous les enregistrements (éventuels) à partir de la date mentionnée ;
- de « recalculer » les affectations pour la période en fonction des desiderata actuels des volontaires ;
C'est l'algorithme qui va déterminer quels sont les deux candidats prioritaires pour chacune des pauses d'une journée.
- 19 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
VIII-A - La structure
VIII-B - Le code
- 20 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
23.
oRst("Rang") = oRst("Rang") + DCount("*", "tAffectations", "tVolontairesFK=" & oRst("tVolontairesPK")
_
24. & " AND RangJour<=0 and MotifRejet =""""")
25. oRst.Update
26. oRst.MoveNext
27. Loop
28. 'Forcer la priorité des Jokers
29. DoCmd.SetWarnings False
30. DoCmd.RunSQL "UPDATE tVolontaires SET Rang = 1E+34 WHERE VolNom Like ""Joker*"";"
31. DoCmd.SetWarnings True
32. 'Sortie
33. oRst.Close
34. Set oRst = Nothing
35. End Sub
Commentaires du code
33 : on affecte un nombre très grand au rang des jokers, pour s'assurer qu'ils seront seulement choisis en dernier
ressort.
Commentaires du code
er
18-21 : la requête construite à la volée pour le 1 février 2016, pause 06-09, aura cet aspect :
- 21 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
- 22 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
Commentaires du code
35-38 : on crée une requête qui extrait la tranche de la pause actuelle dans tPrestations :
- 23 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
- 24 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
50.
If DCount("*", "rPauseEnCours", "tVolontairesFK=" & oRst2("tVolontairesFK")) > 0 Then 'le
dépendant est présent
51. oRst.Edit
52. oRst("RangJour") = -2
53. oRst.Update
54. 'Mettre le rang du dépendant à -2
55. DoCmd.SetWarnings False
56. DoCmd.RunSQL "UPDATE rPauseEnCours SET RangJour = -2 " _
57. & "WHERE tVolontairesFK=" & oRst2("tVolontairesFK") & ";"
58. DoCmd.SetWarnings True
59. oRst2.Close
60. GoTo FinDesControles
61. End If
62. oRst2.MoveNext
63. Loop
64. oRst2.Close
65. End Select
66. 'N.B. On arrive ici pour tous les ordinaires et obligés seuls
67. 'Ce candidat est élu
68. oRst.Edit
69. oRst("RangJour") = 0
70. oRst.Update
71. 'Y a-t-il une incompatibilité concernant ce candidat ?
72. '----------------------------------------------------
73. 'Si non, on passe au suivant
74. If ControleDesIncompatibilites(oRst("tVolontairesFK")) = "" Then GoTo FinDesControles
75. 'Si oui, éliminer les autres volontaires (éventuels) du groupe ayant une moindre priorité
76. strSql = "UPDATE tAffectations SET MotifRejet = ""Incompatible"" , RangJour =1E+35 " _
77. & " WHERE AffDate=#" & Format(DateJ, "mm/dd/yyyy") & "# " _
78. & "AND AffPause=""" & Pause & """ " _
79. & "AND RangJour>0 " _
80. & "AND tVolontairesFK
In(" & ControleDesIncompatibilites(oRst("tVolontairesFK")) & ");"
81. DoCmd.SetWarnings False
82. DoCmd.RunSQL strSql
83. DoCmd.SetWarnings True
84. FinDesControles:
85. intNbreRetenus = DCount("tAffectationsPK", "rPauseEnCours", "RangJour <= 0")
86. oRst.MoveNext
87. Loop
88. 'Retenir les 2 candidats pour cette pause
89. '----------------------------------------
90. Set oRst = CurrentDb.OpenRecordset("SELECT * FROM rPauseEnCours ORDER BY RangJour;")
91. oRst.MoveFirst
92. oRst.Move 2
93. Do Until oRst.EOF
94. oRst.Edit
95. If oRst("MotifRejet") = "" Then oRst("MotifRejet") = "Non prioritaire"
96. oRst.Update
97. oRst.MoveNext
98. Loop
99. 'Sortie
100. Set oQry = Nothing
101. oRst.Close
102. Set oRst = Nothing
103. Set oRst2 = Nothing
104. End Sub
Commentaires du code
15 : rappelons que la requête ramène les candidats à la pause, classés dans l'ordre de leur priorité, pour autant qu'ils
n'aient pas été éliminés à l'étape précédente.
- 25 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
26-40 : si on constate la présence de son obligé parmi les candidats encore en lice pour cette pause, on leur attribue
le rang -2. On saute alors à l'instruction 116 qui nous fera sortir de la boucle : le nombre d'élus est alors au moins
égal à 2 !
45-50 : si on arrive ici, c'est que le dépendant est orphelin et on l'élimine avant de passer au candidat suivant.
73-77 : si un candidat ordinaire ne fait pas partie de l'ensemble des exclus mutuels, il reçoit un rang prioritaire =
0 et on passe au candidat suivant.
La fonction ControleDesIncompatibilites()
- 26 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
oRst.Close
Set oRst = Nothing
End Function
D'une part ARNOTHY (3) ne veut pas venir si ABBOTT Jeff (1) ou FRENCH Nicci (18) vient.
Et d'autre part ni HEMINGWAY Ernest (5), ni MAIGRET Jules (7) ne veulent ARNOTHY comme coéquipière.
Lorsqu'il n'y a pas d'incompatibilité, la fonction envoie un résultat vide (« "" »).
84-91 : s'il y a exclusion mutuelle, les autres membres du groupe doivent être écartés : on met leur rang prioritaire
à 1E+35 (donc ils viendront après les jokers qui ont 1E+34).
Voici la requête qui est créée à la volée, lors du traitement de ARNOTHY le 11/1/16 pour 06-09 :
- 27 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
98-108 : quand deux candidats ont été élus, on sort de la boucle, on relit rPausesEnCours dans l'ordre des priorités
croissantes, on saute les deux premiers enregistrements (les élus) et on écrit « Non prioritaire » dans la colonne
MotifDuRejet si elle est encore vierge.
15-19 : voici par exemple la requête qui serait générée à l'issue de la pause 06-09 du 1/1/2017 pour CHRISTIE (15)
qui a été élue.
- 28 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
- 29 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
30 et 41 : remarquez l'utilisation de la fonction Nz() qui substituera une valeur extrême (1/1/1900 pour une date de
précédente prestation ; 1000 pour un nombre maximum de pauses par jour) quand il y a risque d'un retour Null.
IX - Téléchargement
X - Remerciements
Merci à Jean-Philippe AMBROSINO (argyronet) de m'avoir conseillé des améliorations à apporter à la syntaxe de
mon code.
- 30 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/
Une application pour distribuer les tâches à du personnel disponible par Claude Leloup
- 31 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Claude Leloup. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://claudeleloup.developpez.com/tutoriels/access/affectation-perso/