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 :

Comment faire un tableau d'analyse croisée intéressant?


Sujet :

Access

  1. #1
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut Comment faire un tableau d'analyse croisée intéressant?
    Bonjour, j'essaye depuis maintenant 2 heures de faire un état et je suis incapable de faire ressortir ce que je veux, disons que je suis un peu perdu là!

    Je m'explique:

    J'ai une table 'tblAppel' qui contient entre autres les champs noAppel et dateAppel.

    Je veux faire un état qui affiche le nombre d'appels qu'il y a eu entre:
    -Avant 8h30
    -8h30 et 12h00
    -12h00 et 13h30
    -13h30 et 16h30
    -Après 16h30

    La solution la plus simple est de faire 5 requêtes qui calcul le nombre d'appel. Mais je voulais savoir s'il y a une façon plus optimisée de faire ça. Genre avec un tableau d'analyse croisée?

    Merci

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    Tu pourrai créer une requête qui identifie la plage horaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT dateAppel, DateValue(dateAppel) AS [Date],
    Switch(TimeValue([dateAppel])>#12/30/1899# And TimeValue([dateAppel])<#12/30/1899 8:30:0#,"(a) av 8h30",
           TimeValue([dateAppel])>=#12/30/1899 8:30:0# And TimeValue([dateAppel])<#12/30/1899 12:0:0#,"(b) 8h30~12h00",
           TimeValue([dateAppel])>=#12/30/1899 12:0:0# And TimeValue([dateAppel])<#12/30/1899 13:30:0#,"(c) 12h00~13h30",
           TimeValue([dateAppel])>=#12/30/1899 13:30:0# And TimeValue([dateAppel])<#12/30/1899 16:30:0#,"(d) 13h30~16h30",
           TimeValue([dateAppel])>=#12/30/1899 16:30:0# And TimeValue([dateAppel])<#12/30/1899 23:59:59#,"(e) ap 16h30"
          ) AS PlageHoraire
    FROM tblAppel;
    Ensuite tu crée une requête analyse croisée à partir de la requête ci-dessus.
    [Date] en lignes, PlageHoraire en colonnes, et Compte du champ dateAppel pour les valeurs.

    A+

  3. #3
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Merci, voiçi le mieux que j'ai réussi à faire:

    Premièrement j'ai modifié la requête que tu m'as fournie pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT tblAppel.dateAppel, 
    Switch(
    TimeValue([dateAppel])>#12/30/1899# And TimeValue([dateAppel])<#12/30/1899 8:30:0#,"(a) av 8h30",
    TimeValue([dateAppel])>=#12/30/1899 8:30:0# And TimeValue([dateAppel])<#12/30/1899 12:0:0#,"(b) 8h30~12h00",
    TimeValue([dateAppel])>=#12/30/1899 12:0:0# And TimeValue([dateAppel])<#12/30/1899 13:30:0#,"(c) 12h00~13h30",
    TimeValue([dateAppel])>=#12/30/1899 13:30:0# And TimeValue([dateAppel])<#12/30/1899 16:30:0#,"(d) 13h30~16h30",
    TimeValue([dateAppel])>=#12/30/1899 16:30:0# And TimeValue([dateAppel])<#12/30/1899 23:59:59#,"(e) ap 16h30") AS PlageHoraire
    FROM tblAppel;
    Par la suite j'ai monté ma requête d'analyse croisée comme suit:

    PlageHoraire en colonne et en ligne et un compte sur la dateAppel

    Le résultat est le fichier joint.

    Maintenant je vais essayer de créer mon état.

    Merci
    Images attachées Images attachées  

  4. #4
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Yahoo mon état est de toute beauté! (regarde le fichier joint)

    Comme vous pouvez voir dans mon état, j'ai oublié que je devais indiquer le pourcentage que ce nombre d'appel représente par rapport au nombre d'appel total.

    Est-ce possible? On bien je reviens avec ma première solution des 5 requêtes
    Images attachées Images attachées  

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    J'ai l'impression que la requête d'anlyse croisée n'est pas utile.
    Les titres de lignes et de colonnes sont les mêmes.

    Essaie cette requête d'analyse croisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Count(qryPlageHoraire.DtTm) AS CompteDeDtTm
    SELECT "Cpte" AS Appels, Count(*) AS Tot
    FROM qryPlageHoraire
    GROUP BY "Cpte"
    PIVOT qryPlageHoraire.PlageHoraire;
    Elle ne sort qu'une seule ligne et comporte une colonne supplémentaire Tot représeantant la somme de tous les appels.
    Tu devrai pouvoir calculer ton pourcentage.


    Ou alors une requête de regroupement (pas besoin d'analyse croisée) qry1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    Sum(IIF(TimeValue([DtTm])>#12/30/1899# And TimeValue([DtTm])<#12/30/1899 8:30:0#,1,0)) As [(a) av 8h30],
    Sum(IIF(TimeValue([DtTm])>=#12/30/1899 8:30:0# And TimeValue([DtTm])<#12/30/1899 12:0:0#,1,0)) As [(b) 8h30~12h00],
    Sum(IIF(TimeValue([DtTm])>=#12/30/1899 12:0:0# And TimeValue([DtTm])<#12/30/1899 13:30:0#,1,0)) As [(c) 12h00~13h30],
    Sum(IIF(TimeValue([DtTm])>=#12/30/1899 13:30:0# And TimeValue([DtTm])<#12/30/1899 16:30:0#,1,0)) As [(d) 13h30~16h30],
    Sum(IIF(TimeValue([DtTm])>=#12/30/1899 16:30:0# And TimeValue([DtTm])<#12/30/1899 23:59:59#,1,0)) As [(e) ap 16h30],
    Sum(1) As Tot
    FROM tblAppel;
    Puis requête sur qry1 pour calcul %
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT [(a) av 8h30], [(a) av 8h30]/[Tot]*100 As [(a) %av 8h30], 
     [(b) 8h30~12h00], [(b) 8h30~12h00]/[Tot]*100 As [(b) %8h30~12h00], 
     [(c) 12h00~13h30], [(c) 12h00~13h30]/[Tot]*100 As [(c) %12h00~13h30],
     [(d) 13h30~16h30], [(d) 13h30~16h30]/[Tot]*100 As [(d) %13h30~16h30] ,
     [(e) ap 16h30], [(e) ap 16h30]/[Tot]*100 As [(e) %ap 16h30]
    FROM qry1;
    A+

  6. #6
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Ok merci LedZeppII pour ton immense aide!

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/04/2007, 05h16
  2. [MySQL] Comment faire un tableau triable par un utilisateur ?
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 15/08/2006, 10h52
  3. Comment faire un tableau tout simple dans un état
    Par robertetgorgette dans le forum Access
    Réponses: 1
    Dernier message: 25/07/2006, 16h20
  4. VB6: Comment faire un tableau de tableaux ?
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 10/11/2005, 23h57
  5. [CR] comment faire un tableau croisé
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/08/2004, 19h32

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