Bonjour.
Après des recherches j'ai trouvé sur ce site ce petit modelé qui me convient assez bien
_______________________________________________________________________
Versions : Toutes
Objectif : Etablir un calendrier des absences des employés d'une entreprise sans utiliser VBA
Soit la table des absences nommées tblAbsence :
NumEmploye DebutAbsence FinAbsence 1 10/12/2005 13/12/2005 2 25/12/2005 01/01/2006 3 26/12/2005 27/12/2005 1 04/05/2006 07/05/2006
On désire obtenir la liste des jours où chaque employé a été absent.
Pour cela 3 tables "outils" sont nécessaires.
La table tbl_Jours regroupe les numéros des jours : de 0 à 31
La table tbl_Mois regroupe les mois : de 0 à 12
La table tbl_Annee regroupe les années utiles : de 2000 à 2010 pour notre exemple
Ainsi, l'ensemble des jours peut être obtenu par une requête nommée R01_Calendrier
Enfin, une autre requête nous permet d'obtenir le résultat souhaité
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT tbl_Jours.Numero & "/" & tbl_Mois.Numero & "/" & tbl_Annee.Numero AS D FROM tbl_jours, tbl_mois, tbl_annee WHERE IsDate(tbl_Jours.Numero & "/" & tbl_Mois.Numero & "/" & tbl_Annee.Numero) ORDER BY tbl_annee.Numero, tbl_Mois.numero, tbl_Jours.numero;
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT NumEmploye, D FROM TblAbsence, R01_Calendrier WHERE D>=DebutAbsence AND D<=FinAbsence ORDER BY NumEmploye,D
NumEmploye D 1 10/12/2005 1 11/12/2005 1 12/12/2005 1 13/12/2005 1 4/5/2006 1 5/5/2006 1 6/5/2006 1 7/5/2006 2 1/1/2006 2 25/12/2005 2 26/12/2005 2 27/12/2005 2 28/12/2005 2 29/12/2005 2 30/12/2005 2 31/12/2005 3 26/12/2005 3 27/12/2005
Un inconvénient majeur est que les produits cartésiens de la première requête ramènent un nombre important de données. Pour contourner cela, il serait possible de filtrer les années de la première requête de telle sorte à ne pas générer trop d'enregistrements inutiles.
Créé le 12 novembre 2005 par Tofalu
__________________________________________________________________________________
Le seul petit problème actuellement est que le résultat des dates n'est pas chronologiquement dans le temps comme vous pouvez le voir.
Quel serait la dernière manipulation à faire pour que ce soit bien dans l'ordre.
Merci à vous pour votre aide.
Cordialement
Partager