Multi-Comptage dans dans une requête

Bonjour,

Avant tout, voir l'imprime écran ci dessous réalisé sur Excel.
le premier tableau correspond à 1/
et ce que je voudrais en 2/



Je rencontre un problème qui me prend la tête depuis un bon moment et je ne trouve pas la solution.
Je m'explique.
J'ai une table (table-1) avec une liste de données qui sert de liste de choix dans une autre table (table-2).
La Table-2 contient différents champs dont deux champs Oui/Non (valide et actif) (ces deux champs sont des données qui n'ont rien à voir l'une avec l'autres)
1/ J'ai créé une requête pour compter chaque ligne correspondant à la liste de choix.
Jusque là, c'est parfait et fonctionne très bien.
Maintenant cela ce complique.

2/ J'ai fait la même requête en reprenant la valeur de la Table-1 (liste de choix), puis la ligne attachée à cette liste de choix de la Table-2 que je compte (comme pour 1/) et un dernier champ oui/non (valide) avec critère: Oui
là encore cela fonctionne très bien, mais je voudrais que même les lignes de la liste de choix n'ayant pas de données (donc vide ou zéro) soit quand même affichée sans rien dedans
Par exemple, Ligne 1 (Valide et Actif vide), Ligne 2 (Valide vide), Ligne 6 (Actif vide).
Comme expliqué ci-dessus, seules les lignes ayant des données de Table-2 s'affiche et pas les autres lignes.

Mon second problème qui rejoint le premier.
Si j'arrive à régler le premier problème je voudrais afficher le second critère Oui/Non lui aussi avec le critère Oui dans la même requête (Quitte à passer par plusieurs requête).
La finalité étant de présenter cela dans un formulaire tabulaire

Et même l'idéal serait de mettre les 3 tableaux dans une seule requête, mais bon !!!!

Alors cela fonctionne très bien sur Excel et je pourrais m'en contenter, mais sur Access n'est une nouvelle chose pour moi que je ne parviens pas à régler seul et je voudrais juste savoir comment on fait, pour peu que se soit possible.

En vous remerciant par avance

Configuration: Windows / Chrome 102.0.0.0

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour,
    Je n'ai pas compris.
    Peux-tu partager les sources SQL de tes requêtes Access?
    1. Bonsoir,

      Voici en pj la bd.
      Dans l'affichage de formulaire je voudrais juste que la totalité de la liste soit affichée dans le SF triés, même les champs vides.
      Comme dans l'exemple Excel ci-dessus.

      Haiiii, je ne trouve pas comment ajouter une pièce jointe pour envoyer la BD

      Merci de m'avoir répondu
      Bonne soirée
      1. Contributeur
        Une source SQL d'une requête Access, c'est du texte. Il n'est pas utile de partager la bd, il est préférable de bien décrire la situation.
    2. Bonjour yg_be,


      Je voudrais pouvoir reproduire sur Access ces tableaux Excel.
      Comme vous le constatez, la différence est que pour les tableaux vert et rouge les lignes vides n'apparaissent pas et moi je voudrais qu'elles soient visibles, comme sur Excel

      Et la seconde chose, mais la je ne sais pas si c'est possible, avoir les deux tableaux "Valide" et "Actif" dans la même requête pour en faire un seul formulaire (comme tableau Excel vert et rouge)

      Voici dessous les source SQL des trois requêtes

      Source SQL de la requête attaché au sous-formulaire 1 ((bleu) R-detail):

      SELECT [T-liste2].[ID-liste2], [T-liste2].liste2, Count([T-detail2].liste2) AS CompteDeliste2
      FROM [T-liste2] INNER JOIN [T-detail2] ON [T-liste2].[ID-liste2] = [T-detail2].liste2
      GROUP BY [T-liste2].[ID-liste2], [T-liste2].liste2;

      Source SQL de la requête attaché au sous-formulaire 2 ((vert) R-trie-par-valide):

      SELECT [T-detail2].liste2, [T-detail2].valider, Count([T-detail2].valider) AS comptevalide, [T-liste2].liste2
      FROM [T-liste2] INNER JOIN [T-detail2] ON [T-liste2].[ID-liste2] = [T-detail2].liste2
      GROUP BY [T-detail2].liste2, [T-detail2].valider, [T-liste2].liste2
      HAVING ((([T-detail2].valider)=True));

      Source SQL de la requête attaché au sous-formulaire 3 ((rouge) R-trie-par-actif):

      SELECT [T-detail2].liste2, [T-detail2].[actif], Count([T-detail2].[actif]) AS compteactif, [T-liste2].liste2
      FROM [T-liste2] INNER JOIN [T-detail2] ON [T-liste2].[ID-liste2] = [T-detail2].liste2
      GROUP BY [T-detail2].liste2, [T-detail2].[actif], [T-liste2].liste2
      HAVING ((([T-detail2].[actif])=True));

      Bonne journée
      1. Contributeur
        Si je comprends bien, tu as ceci:
        table [T-liste2], avec les champs [ID-liste2], liste2
        table [T-detail2] avec les champs liste2, valider, actif

        Peut-être:
        SELECT [T-liste2].[ID-liste2], [T-liste2].liste2, Count([T-detail2].liste2) AS CompteDeliste2
        sum(iif(actif,1,0)) as compteactif, sum(iif(valider,1,0)) as comptevalide
        FROM [T-liste2] INNER JOIN [T-detail2] ON [T-liste2].[ID-liste2] = [T-detail2].liste2
        GROUP BY [T-liste2].[ID-liste2], [T-liste2].liste2;