Tableau par mois et année Access

Résolu/Fermé
Dragi - 7 avril 2009 à 13:34
 Utilisateur anonyme - 9 avril 2009 à 22:35
Bonjour et désolée d'avance car je me rends compte que ce post est très long,

Je me décide à demander de l'aide ici parceque je ne sais pas trop quoi faire.
Je possède une table pour lesquelles j'ai 2 dates d'étude (prévue et réelle) et 2 dates de mise en service (prévue et réelle) par numéro d'affaire. Le format de toutes les dates est le même : jj/mm/aaaa et spécifié comme tel dans la table (Date, abrégé)
Je souhaite obtenir un tableau pour lequel j'aurai le NOMBRE de dates (pour ces 4 champs) par mois et année, quitte à avoir des lignes vides pour les mois et années où je n'ai aucune affaire qui a été traitée, le but final étant d'en faire un graphique.
Par exemple :
Mois / Année / Nb études prévues / Nb études Réalisées / Nb MES prévues / Nb MEs réalisées
01 2009 10 8 8 6
02 2009 15 15 12 11
...
J'ai crée une table DATE dans laquelle j'ai rentré tous les mois pour chaque année, de façon à pouvoir afficher même les mois où je n'ai pas d'affaire.

Débutant depuis une semaine sous ACCESS, j'ai crée la requête suivante pour la première date:
SELECT DATE.MOIS, DATE.ANNEE, Count([Table1].[Date étude (prévue)]) AS [Nombre Dates Etudes Prevues]FROM [Table1], [DATE]
GROUP BY DATE.MOIS, DATE.ANNEE, [Table1].[Date étude (prévue)]
HAVING ((Month([Date étude (prévue)])=[DATE].[MOIS] And Year([Date étude (prévue)])=[DATE].[ANNEE]))
ORDER BY DATE.ANNEE;

J'obtiens le tableau suivant :
MOIS ANNEE Nombre Dates Etudes Prevues
8 2008 2
8 2008 12
8 2008 3
9 2008 14
10 2008 6
4 2009 2

Les répétitions des mois et années étant dues au fait que en aout 2008 par exemple, j'ai 3 dates différentes (14, 21 et 28 aout).
J'ai essayé de rajouter la date étude réelle, en plaçant la condition Month() et Year() de cette date dans la ligne "Ou" mais je rencontre un souci

SELECT DATE.MOIS, DATE.ANNEE, [Table1].[Date étude prévue], Count([Table1].[Date étude prévue]) AS [Nb E prévues], [Table1].[Date étude réelle], Count([Table1].[Date étude réelle]) AS [Nb E réelles]
FROM [Table1], [DATE]
GROUP BY DATE.MOIS, DATE.ANNEE, [Table1].[Date étude prévue], [Table1].[Date étude réelle]
HAVING (((Month([Date étude prévue]))=[DATE].[MOIS]) AND ((Year([Date étude prévue]))=[DATE].[ANNEE])) OR (((Month([Date étude réelle]))=[DATE].[MOIS]) AND ((Year([Date étude réelle]))=[DATE].[ANNEE]))
ORDER BY DATE.ANNEE;

Les mois qui n'apparaissaient pas avant sont bien là. Mais j'obtiens des comptes qui ne devraient pas y être et inversement. Je m'explique sur un exemple :
Pour une affaire, la date d'étude prévue est le 01/09/2008 et la réelle est le 01/11/2008.
J'obtiens pour la ligne 09/2008 : 1 pour les prévues et 1 pour les réelles et de même pour la ligne 11/2008.
Alors que je devrais obtenir pour le 09/2008 1 pour prévue et 0 pour réelle et inversement pour 11/2008.
Je pense que cela est du au "Ou" qui comprend le "Et" (ou non exclusif) mais je n'explique pas le fait que je n'obtiens pas les lignes avec 1 et 0...

1 - Comment éviter les répétitions des mois ? (n'obtenir qu'une ligne pour 08/2008 par exemple)
2 - Comment faire pour que j'obtienne bien les 0 quand je n'ai pas de date ou les mois et années correspondent ?
Je pense que si je résouds ces 2 points je devrais être capable de le faire pour les 4 dates...

Merci à tous ceux qui auront eu la patience de lire ce post jusqu'au bout et qui pourront ou essayeront de m'aider :)

5 réponses

Utilisateur anonyme
7 avril 2009 à 22:35
Hi , I'm going on...à toute à l'heure, je crois Napoléon à copié en disant une image vaut mieux que mille mots...
mais il l'a quand même dit !...L'image ? try Cijoint.fr et pose ton fichier reponse tu auras SeeYa !
1
Utilisateur anonyme
7 avril 2009 à 22:40
First point :
1 - Comment éviter les répétitions des mois ? (n'obtenir qu'une ligne pour 08/2008 par exemple)
Faire un regroupement sur [mois] sur [Année] et compte sur [etude]..
0
Utilisateur anonyme
7 avril 2009 à 22:48
Number 2...en fait ta question montre la limite de ton raisonnement (ce n'est pas péjoratif)..tu fais correspondre à un évènement deux dates dans le temps prévu, réalisé sont associés à la même affaire puisque la même ligne.
Tu peux avoir cela bien sur mais il faut poser deux questions différentes, i.e deux requêtes, l'une sur le prévu where combien (compte sur affaire) j'ai par mois (regroupement) suffise car forcement ici cet evènement à une date
l'autre identique sur réalisé.
le resultat de ces deux requêtes peuvent étre regroupés dans une autre qui donnerait mois compte prévu compte realisé then graphique !
0
Merci pour ta réponse cocotehier.
Je me doutais qu'il fallait plusieurs requêtes mais j'espérai très fortement de pouvoir n'en faire qu'une :)
Pour le point 1, c'est résolu je n'ai plus de doublons dans les mois merci.
Je vais créer les autres requêtes en espérant que j'arrive à les regrouper par la suite (effectivement mon raisonnement est limité je ne suis pas super douée pour tout ça et je débute totalement sous Access).
Je reposterai ici si jamais j'ai encore un souci
Merci encore
0
Utilisateur anonyme
8 avril 2009 à 20:22
Bonjour,
Inscrit-toi comme membre, c'est mieux et ton expérience servira à tous.
Comme je te le disais la limite est la fin d'un ensemble - aussi le début d'un autre - le raisonnement est un ensemble, il y a donc autant d'ensemble que de façon de voir donc de raisonnement. Access est un excellent exercice car il est un systéme de question réponse. Le plus difficile n'est jamais de savoir faire mais de savoir pourquoi faire.
0
Bon ben je n'y arrive pas...
J'ai bien crée mes 4 requêtes, j'obtiens bien ce que je veux, mis à part qu'il ne m'affiche pas les lignes où j'ai un compte égal à 0 mais peu importe...
Comment je peux regrouper mes requêtes pour obtenir tous les résultats sur une seule feuille de données ?
J'ai essayé de créer une jointure entre les mois de chaque requête, sans succès...
Là, je me retrouve avec 4 requêtes qui me donnent le nombre d'affaires (d'études ou de travaux, prévues ou réalisées) pour chaque mois et chaque année. Je veux qu'il m'affiche le mois, l'année, le nombre d'études prévues, le nombre d'études réalisées, le nombre de travaux prévus et le nombre de travaux réalisés.
A écrire ça parait simple, mais je dois vraiment pas raisonner dans le bon sens...

Voilà le code de mes 4 requêtes :

SELECT DATE.MOIS, DATE.ANNEE, Count([Table1].Affaire) AS [Compte Etudes Prévues]
FROM [DATE], [Export IEP]
WHERE (((Month([Date étude prévue]))=[DATE].[MOIS]) AND ((Year([Date étude prévue]))=[DATE].[ANNEE]))
GROUP BY DATE.MOIS, DATE.ANNEE
ORDER BY DATE.ANNEE;

Seul change par requete le champ sur lequel porte Month() et Year() et le nom du compte.

Quelqu'un a une idée ?
0
Dragi > Dragi
9 avril 2009 à 15:09
Eureka !
Suffisait de lier le Mois de DATE dans ma requete finale avec tous les autres Mois de mes 4 requetes...
Evident me direz-vous, trop peut etre...
Bien à vous :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
9 avril 2009 à 22:35
Bien joué ! Il faut qu'il y est toujours un élement commun à tous les ensembles.....
0