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

Requêtes et SQL. Discussion :

Nombre d'occurences consécutives depuis condition


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Nombre d'occurences consécutives depuis condition
    Bonjour,

    J'ai une table TABLE avec trois colonnes :

    - DATE : date de la réunion (format date dd/mm/yyyy)
    - PARTICIPANT : Nom du participant à la réunion (format texte)
    - ABS_PRES : Présence ou Absence du membre (format texte)

    J'aimerai créer une requête Access qui me permette de compter le nombre d'absences consécutives du participant depuis la dernière réunion où il a été présent. Ce "compteur d'absences" repart donc à 0 à chaque fois que le participant est présent à la réunion.

    Ci-dessous, un exemple des résultats que j'aimerai obtenir de la requête (en jaune)

    Nom : Ex_Access1.png
Affichages : 394
Taille : 8,7 Ko

    Sachant que je n'ai pas besoin d'obtenir une table comme présentée, juste du nombre d'absences consécutives (0, 1 ou 2) par participant au moment où je lance ma requête (ci-dessous).

    Nom : Ex_Access2.png
Affichages : 396
Taille : 5,0 Ko

    Connaissant très peu le langage VBA/SQL, je ne sais vraiment pas comment aborder ce type de requête, même si cela peut paraître simple.

    Merci par avance si jamais vous avez une idée à me proposer, ou un post vers lequel m'orienter et que je n'aurai su trouver.

    Bien cordialement

    Kévin L

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    On va essayer une méthode artisanale sans VBA (qui serait plus simple, et en tout cas plus court).
    Pour la description de la méthode qui consiste à juxtaposer, dans une requête, des éléments d’un enregistrement avec des éléments de l’enregistrement qui le précède (ou qui le suit, dans notre cas !), je t’invite à consulter la proposition de f-leb : http://blog.developpez.com/f-leb/p11...istrement_prec

    Au départ, cette table



    Et pour faciliter la lecture de la suite : un extrait par individu



    Nous aurons ce résultat :





    ---------------------


    Une première requête pour ramener les absences




    On recherche ensuite la date de la réunion suivante




    On peut déterminer ainsi si l’individu était présent à la suivante





    Et on continue le même raisonnement



    Jusqu’au moment où, la requête qui prépare les suivants ne ramène rien



    Dans notre cas de test, plus la peine d’aller plus loin…

    On fait une requête qui récapitule les résultats





    Et finalement, pour ne retenir que les lignes qui nous intéressent
    , c’est-à-dire :





    cette dernière requête (pas piquée des vers !)




    dans laquelle on exprime qu’on ramène la ligne pour autant qu’une de ses colonnes n’est pas aussi incluse dans une colonne plus à droite.


    Et voilà


    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour Claude,

    Merci beaucoup pour ton aide détaillée et pédagogique, qui m'a permis d'atteindre ce que je cherchais à faire .

    J'ai juste l'impression que les illustrations qui suivent, pour la 2e absence, ton "On peut déterminer ainsi si l’individu était présent à la suivante" ne sont pas celles que tu voulais montrer. Néanmoins, l’illustration pour la 3e absence m'a permis de comprendre ce que tu me disais de faire.

    Par curiosité, je suis preneur si quelqu'un à un code VBA pour faire cela plus rapidement.

    Merci encore, bien cordialement

    Kévin L

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    J'ai juste l'impression que les illustrations qui suivent, pour la 2e absence, ton "On peut déterminer ainsi si l’individu était présent à la suivante" ne sont pas celles que tu voulais montrer. Néanmoins, l’illustration pour la 3e absence m'a permis de comprendre ce que tu me disais de faire.
    Bien vu, je viens de corriger ! Merci


    Par curiosité, je suis preneur si quelqu'un à un code VBA pour faire cela plus rapidement.

    En cours.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Voici.

    L’environnement





    Une routine qui complète la colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    Option Compare Database
    Option Explicit
     
     
    Public Sub NumAbsences()
      Dim i As Integer
      Dim sParticipant As String
      Dim rst As Recordset
        Set rst = CurrentDb.OpenRecordset("rLaTableTriee")
        rst.MoveFirst
        Do While Not rst.EOF
     
          'À la rupture, réinitialiser le compteur
          If sParticipant <> rst("Participant") Then
             i = 0
             sParticipant = rst("Participant")
          End If
          'Compter
          If rst("Present") = False Then
              i = i + 1
            Else
              i = 0
          End If
          'Compléter la colonne NumOrdreAbs
          rst.Edit
          rst("NumOrdreAbs") = i
          rst.Update
          'Au suivant
          rst.MoveNext
     
      Loop
      rst.Close
      Set rst = Nothing
    End Sub
    Pour l’exécuter : <CTRL + G> pour afficher la fenêtre d’exécution et saisir :



    Et le résultat :

    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/02/2015, 12h15
  2. [AC-2003] Condition sur enregistrement precedent, nombre de valeurs consécutives
    Par Colt122 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 19/08/2010, 12h05
  3. [Toutes versions] Calculer le nombre d'occurence d'une valeur de cellule suivant condition
    Par shaun_the_sheep dans le forum Excel
    Réponses: 3
    Dernier message: 05/05/2010, 10h11
  4. Réponses: 8
    Dernier message: 18/01/2005, 10h58
  5. recherche du nombre d'occurences dans une table
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/01/2004, 20h03

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