IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Formulaire de planning pour la gestion des présences et absences de denishulo


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Enseigner
    Inscrit en
    Septembre 2022
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseigner
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 40
    Points : 35
    Points
    35
    Par défaut Formulaire de planning pour la gestion des présences et absences de denishulo
    Bonjour!

    Pour gérer les absences de mes élèves j'utilise un formulaire adapté du planning des absences et présences de denishulo. Mais j'ai un souci: quand je sélectionne une classe la liste des élèves ne s'affiche pas; mais le filtre est déjà fait au niveau de la combobox cboEleves. Ce qui me permet de sélectionner un élève et d'enregistrer ses absences.
    a/ J'aimerais bien qu'à l'ouverture du formulaire F_Planning que la liste des élèves de la première classe dans l'ordre de la numérotation automatique s'affiche par défaut et qu'à la sélection d'une classe que liste des élèves apparaissent.

    b/ Je constate aussi que le nom des élèves est répété autant de fois qu'il y a de séance. Voir formulaire.

    c/ Pour les absences de deux heures, par exemple de 8H à 10H, il faut enregistrer l'absence de 8H à 9H et ensuite de 9H à 10H. Comment peut on aller plus vite si l'absence dure plus d'une heure?

    Le formulaire principal F_Planning est composé de quatre listes déroulante: cboclasse, cboEleve, cboMois et cboAnnee
    Pour les enregistrements des absences il y a le formulaire F_SaisiePlanning qui s'affiche au clic sur F_Planning comme sur l'image
    Merci par avance
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut A première vue
    Bonjour,

    Pour le a) :

    Il y a moyen à l'ouverture du formulaire de planning de sélectionner en VBA le 1er élément de la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Open(Cancel As Integer)
     
    ' choix de la 1ère classe :
    Me.Classe = Me.Classe.ItemData(0)
     
    MajPlanning ' puis mise à jour du planning en fonction de ce choix
     
    End Sub
    Pris dans la faq :

    https://access.developpez.com/faq/?page=zdl#SelLignZdlm


    Concernant le point b) et la répétition des élèves dans la requête source, cela peut venir de la jointure entre la table élèves et l'autre source :

    inner join au lieu de left join dans le SQL.

    Donc, il faudrait créer une jointure gauche entre la table élèves et l'autre source, si j'ai bien compris

    Cela peut aussi venir d'un champ supplémentaire dans le regroupement en en-tête de ligne.


    Cdlt

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Enseigner
    Inscrit en
    Septembre 2022
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseigner
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 40
    Points : 35
    Points
    35
    Par défaut RE
    Citation Envoyé par User Voir le message
    Bonjour,

    Pour le a) :

    Il y a moyen à l'ouverture du formulaire de planning de sélectionner en VBA le 1er élément de la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Open(Cancel As Integer)
     
    ' choix de la 1ère classe :
    Me.Classe = Me.Classe.ItemData(0)
     
    MajPlanning ' puis mise à jour du planning en fonction de ce choix
     
    End Sub
    Pris dans la faq :

    https://access.developpez.com/faq/?page=zdl#SelLignZdlm


    Concernant le point b) et la répétition des élèves dans la requête source, cela peut venir de la jointure entre la table élèves et l'autre source :

    inner join au lieu de left join dans le SQL.

    Donc, il faudrait créer une jointure gauche entre la table élèves et l'autre source, si j'ai bien compris

    Cela peut aussi venir d'un champ supplémentaire dans le regroupement en en-tête de ligne.


    Cdlt
    Je viens de lire votre solution. Je l'essaie puis je vous reviens.

    Merci

    Je viens d'essayer votre suggestion mais cela ne marche toujours pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Open(Cancel As Integer)
        Me.cboMois.value = Month(Date) ' on copie dans la liste le mois courant
        Me.cboAnnee.value = Year(Date) ' on copie dans la liste l'année courante
        Me.cboClasse = Me.cboClasse.ItemData(0)
        Me.cboEleve.RowSource = "SELECT Eleve_id, [Eleve], Absent FROM R_Eleves where Classe_id=" & Nz(Me.cboClasse.value, 0) & " ORDER BY R_Eleves.Eleve;"
     
     
        MajPlanning ' actualise le planning
     
     
    End Sub
    Je copie les codes sql que j'ai utilisés

    R_PLANNING_ANALYSE_CROISEE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Max(R_PlanningEleve.AbsPres) AS AbsPres
    SELECT R_PlanningEleve.Eleve_id, R_PlanningEleve.Eleve, R_PlanningEleve.NumOrdre, R_PlanningEleve.PeriodeJour, R_TotalHeures.TotalHeures
    FROM R_PlanningEleve LEFT JOIN R_TotalHeures ON (R_PlanningEleve.PeriodeJour = R_TotalHeures.PeriodeJour) AND (R_PlanningEleve.Eleve_id = R_TotalHeures.Eleve_id)
    GROUP BY R_PlanningEleve.Eleve_id, R_PlanningEleve.Eleve, R_PlanningEleve.NumOrdre, R_PlanningEleve.PeriodeJour, R_TotalHeures.TotalHeures
    ORDER BY R_PlanningEleve.Eleve, R_PlanningEleve.NumOrdre
    PIVOT R_PlanningEleve.JourMois In (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31);
    R_PlanningEleve


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_ElevePeriodeJour.Eleve_id, R_ElevePeriodeJour.Eleve, R_ElevePeriodeJour.NumOrdre, R_ElevePeriodeJour.PeriodeJour, Day([DateJour]) AS JourMois, R_PLANNING.AbsPres
    FROM R_ElevePeriodeJour LEFT JOIN R_PLANNING ON (R_ElevePeriodeJour.Eleve_id = R_PLANNING.Eleve_id) AND (R_ElevePeriodeJour.PeriodeJour = R_PLANNING.PeriodeJour)
    ORDER BY R_ElevePeriodeJour.Eleve, R_ElevePeriodeJour.NumOrdre;
    R_PLANNING

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PARAMETERS [Forms]![F_Planning]![cboAnnee] Value, [Forms]![F_Planning]![cboMois] Value, [Forms]![F_Planning]![cboClasse] Value, [Forms]![F_Planning]![cboEleve] Value;
    SELECT T_PLANNING.Eleve_id, T_PLANNING.Classe_id, T_PLANNING.DateJour, T_PLANNING.PeriodeJour, T_PLANNING.IdMotifAbsence AS AbsPres, Year([DateJour]) AS Année, Month([DateJour]) AS Mois, T_CLASSES.Classe_libelle
    FROM T_PLANNING LEFT JOIN T_CLASSES ON T_PLANNING.Classe_id = T_CLASSES.Classe_id
    WHERE (((T_PLANNING.Eleve_id) ALike Nz(Forms!F_PLANNING!cboEleve,"*")) And ((T_PLANNING.Classe_id) ALike Nz(Forms!F_Planning!cboClasse,"*")) And ((Year([DateJour]))=Forms!F_Planning!cboAnnee) And ((Month([DateJour]))=Forms!F_Planning!cboMois));
    R_ElevePeriodeJour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_ELEVES.Eleve_id, [Prenom_el] & " " & [Nom_el] AS Eleve, T_PeriodeJour.PeriodeJour, T_PeriodeJour.NumOrdre, T_ELEVES.Classe_id
    FROM T_PeriodeJour, T_ELEVES
    WHERE (((T_ELEVES.Eleve_id) ALike Nz(Forms!F_Planning!cboEleve,"*")) And ((T_ELEVES.Classe_id) ALike Nz(Forms!F_Planning!cboClasse,"*")))
    ORDER BY [Prenom_el] & " " & [Nom_el], T_PeriodeJour.NumOrdre;
    R_TotalHeures


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_PLANNING.Eleve_id, T_PLANNING.PeriodeJour, Sum(IIf([IdMotifAbsence]="RE",[NbHeures],DateDiff("h",Left([PeriodeJour],5),Right([PeriodeJour],5)))) AS TotalHeures
    FROM T_PLANNING
    WHERE (((Year([DateJour]))=Forms!F_Planning!cboAnnee) And ((Month([DateJour]))=Forms!F_Planning!cboMois))
    GROUP BY T_PLANNING.Eleve_id, T_PLANNING.PeriodeJour;
    R_ElevesAbsents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT T_PLANNING.Eleve_id, Year([DateJour]) AS Année, Month([DateJour]) AS Mois
    FROM T_PLANNING
    WHERE (((Year([DateJour]))=Forms!F_Planning!cboAnnee) And ((Month([DateJour]))=Forms!F_Planning!cboMois));

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Pour afficher la liste des élèves dans la liste du même nom, il faut mettre ce code sur l'événement après-maj de la liste déroulante cboClasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cboClasse_AfterUpdate()
     
        Me.cboEleve.RowSource = "SELECT DISTINCT Eleve_id, [Eleve], Absent FROM R_Eleves where Classe_id=" & Nz(Me.cboClasse.Value, 0) & " ORDER BY R_Eleves.Eleve;"
     
        cboEleve.SetFocus
        cboEleve.Dropdown ' déroule la liste des élèves
     
        MajPlanning ' met à jour le planning
     
    End Sub
    Pour vos requêtes :

    Attention à la synthaxe avec Alike "Syntaxe compatible SQL Server (ANSI 92)" :

    https://www.developpez.net/forums/d1...access-2010-a/

    Il faudrait utiliser (synthaxe sql server):

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    (T_ELEVES.Eleve_id) ALike Nz(Forms!F_Planning!cboEleve,"%")

    Ou alors (synthaxe Access):

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    (T_ELEVES.Eleve_id) Like Nz(Forms!F_Planning!cboEleve,"*")

    Important :

    Assurez vous aussi que la valeur de la propriété "Colonne liée" (colonne n°1) de vos listes déroulantes cboEleve et cboClasse correspond bien avec les champs Eleve_id et Classe_id de vos tables.

    Cdlt

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Enseigner
    Inscrit en
    Septembre 2022
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseigner
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 40
    Points : 35
    Points
    35
    Par défaut RE
    Citation Envoyé par User Voir le message
    Bonjour,

    Pour afficher la liste des élèves dans la liste du même nom, il faut mettre ce code sur l'événement après-maj de la liste déroulante cboClasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cboClasse_AfterUpdate()
     
        Me.cboEleve.RowSource = "SELECT DISTINCT Eleve_id, [Eleve], Absent FROM R_Eleves where Classe_id=" & Nz(Me.cboClasse.Value, 0) & " ORDER BY R_Eleves.Eleve;"
     
        cboEleve.SetFocus
        cboEleve.Dropdown ' déroule la liste des élèves
     
        MajPlanning ' met à jour le planning
     
    End Sub
    Pour vos requêtes :

    Attention à la synthaxe avec Alike "Syntaxe compatible SQL Server (ANSI 92)" :

    https://www.developpez.net/forums/d1...access-2010-a/

    Il faudrait utiliser (synthaxe sql server):

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    (T_ELEVES.Eleve_id) ALike Nz(Forms!F_Planning!cboEleve,"%")

    Ou alors (synthaxe Access):

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    (T_ELEVES.Eleve_id) Like Nz(Forms!F_Planning!cboEleve,"*")

    Important :

    Assurez vous aussi que la valeur de la propriété "Colonne liée" (colonne n°1) de vos listes déroulantes cboEleve et cboClasse correspond bien avec les champs Eleve_id et Classe_id de vos tables.

    Cdlt
    Bonjour!
    C'est ACCESS qui m'impose l'utilisation de Alike. Like est remplacé par Alike automatiquement. J'utilise MS Office 2013.

    Pour le reste, je vous reviendrai quand j'aurai fini de vérifier.

    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Dans les options Access, n'avez vous rien de coché sous l'option "Syntaxe compatible SQL Server (ANSI 92)" :

    Nom : options_access.png
Affichages : 215
Taille : 35,5 Ko

    Cdlt

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Enseigner
    Inscrit en
    Septembre 2022
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseigner
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 40
    Points : 35
    Points
    35
    Par défaut RE
    Citation Envoyé par User Voir le message
    Bonjour,

    Dans les options Access, n'avez vous rien de coché sous l'option "Syntaxe compatible SQL Server (ANSI 92)" :

    Nom : options_access.png
Affichages : 215
Taille : 35,5 Ko

    Cdlt
    Si. Exactement à ce niveau

    Cette base de données est coché
    Par défaut pour les nouvelles bases de données est aussi coché

Discussions similaires

  1. Réponses: 17
    Dernier message: 25/11/2020, 13h19
  2. Réponses: 23
    Dernier message: 22/07/2019, 22h46
  3. [Toutes versions] Planning pour la gestion des présences en entreprise
    Par kesamba dans le forum IHM
    Réponses: 17
    Dernier message: 14/10/2018, 20h40
  4. [AC-2003] probleme avec Planning pour la gestion des présences en entreprise
    Par kesamba dans le forum VBA Access
    Réponses: 19
    Dernier message: 30/10/2010, 22h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo