Agrégation de plusieurs requêtes - Perte de données

Fermé
lenovice - 10 juil. 2015 à 16:51
 Tessel75 - 12 juil. 2015 à 13:25
Bonjour à tous !

Malgré toutes mes recherches, impossible de résoudre un problème qui parait pourtant très simple (mais j'ai encore bcp bcp à apprendre)!
Je vous explique la nature de mon problème :

Je dois gérer des séjours dans un hôpital. Je dispose d'une base de données Excel (que j'importe sous Access) qui résume le nombre de séjours en brut par mois avec les colonnes suivants :
- Service (A, B, C, D, etc.)
- Année
- Mois
- Nb de séjours

Je souhaite faire une requête dans laquelle j'ai l'ensemble de mes services avec le nombre de séjours correspondants à Janvier 2014 et Janvier 2015.
Pour cela je fais une requête "Janvier 2014" sur la BDD avec :
- Champs 1 : Service
- Champs 2 : Nb Séjours
- Champs 3 : Où mois = « Janvier » (n'apparait pas)
- Champs 4 : Où Année = « 2014 » (n'apparait pas)

Une seconde "Janvier 2015" avec :
- Champs 1 : Service
- Champs 2 : Nb Séjours
- Champs 3 : Où mois = « Janvier » (n'apparait pas)
- Champs 4 : Où Année = « 2015 » (n'apparait pas)

Et la troisième est simplement une agrégation. Je fais une requête sélection avec :
- Champs 1 : Service
- Champs 2 : Nb séjours janvier 2014 (vient de la requête 1)
- Champs 3 : Nb séjours janvier 2015 (vient de la requête 2)

Seulement, et c'est là tout mon problème, si la structure n'existait pas en 2014, elle n'apparait pas dans la requête 1. Et lors de l'agrégation des 2 requêtes je perds le service complètement même s'il y a de l'activité en 2015. La requête sur les requête ne garde que les services existant dans la requête 1 ET la requête 2.

Ce que j'aimerai c'est avoir tous les services, avec une case vide pour le nb de séjours si le service n'apparaissait pas en 2014 par exemple.

J'espère que j'ai été assez clair ! Merci beaucoup pour votre aide !!!

2 réponses

Bonjour Collègue (J'étais encore cadre IDE l'année dernière)
Si j'ai bien compris:
Si ce n'est pas déjà fait, il faut que tu entres tes données Excel dans ta base Access, les unes à la suite des autres, à la queue leu-leu, selon tes champs.
Ensuite, il me semble, selon ce dont tu as besoin, que la meilleure solution serait une requête-croisée, qui te présenterait tes données sous forme de tableau.
Juste 2 précautions: bien choisir les types de données à mettre en ligne, aucune limite; et le type de données à mettre en colonne, une seule catégorie. Dans la classe "Valeurs", choisir "Somme".
Le tableau ressemblerait à cela:

_______________Service1__Service2__Service3__Service4
Année1__Mois1____10_______12_______14_______16
Année1__Mois2____11_______13_______15_______17
Année1__Mois3____19_______11_______13_______12
Année2__Mois1____10_______12_______14_______16
Année2__Mois2____11_______13_______15_______17
Année2__Mois3____19_______11_______13_______12

Bonne suite
0
Merci beaucoup de ta réponse mais en fait mon problème va un peu plus loin, et la requête croisée ne peut pas le résoudre. Je m'explique : Il m'arrive d'avoir d'autres bases, comme une table avec le capacitaire (Nombre de lits par service)

Et là si je fais une requête avec :
- Champs 1 : Service
- Champs 2 : Nb de séjours 2014
- Champs 3 : Nb de séjours 2015
- Champs 4 : Capacitaire
et que le Service X n'existait pas dans ma table "Capacitaire", et bien je perd toute le service dans cette requête même s'il y avait des séjour en 2014 et en 2015...

En fait mon but c'est d'additionner des requête en gardant TOUTES les clés primaires qui les composes.

SCHEMA :

Requête 1 :
Service_____Séjour 2014
A____________50____
B____________56____
C____________72____

Requête 2 :
Service_____Séjour 2015
B____________49____
C____________63____
D____________69____

Requête 3:
Service_______Lits
B____________8____
C____________5____
D____________4____
E____________3____

Requête que je cherche à construire:
Service_____Séjour 2014_____Séjour 2015___________Lits__
A____________50_______________00_______________0____
B____________56_______________49_______________8____
C____________72_______________63_______________5____
D____________00_______________69_______________4____
E____________00_______________00_______________3____

Et pour le moment ma requête ne me sort que les services présents dans les requête 1 ET 2 ET 3 soit:
Service_____Séjour 2014_____Séjour 2015___________Lits__
B____________56_______________49_______________8____
C____________72_______________63_______________5____

Dis comme ça, ça doit pas être si compliqué à faire, mais je bloque.....
0
Bonjour,
Dans ce cas le mieux serait d'utiliser un tableau dynamique croisé.
Le problème est que le formulaire de Access à partir de 2007 est assez mal foutu et assez difficile à maitriser. Enfin ...., je trouve, et j'y ai renoncé.
Aussi, si tu n'as pas trop l'habitude, je te conseillerais de passer par Excel, au moins au début pour bien prendre la main, et quitte à revenir au formulaire croisé de Access par la suite.
Donc la manoeuvre est:
1) Faire une requête sélection normalement, avec tous les champs dont tu as besoin.
2) Lancer la requête
3) Exporter le résultat de la requête vers Excel
4) Faire le TDC sur Excel en suivant l'assistant qui, lui, est assez bien fait
C'est un peu plus long que directement avec Access, mais plus facile. Avec l'avantage de pouvoir partager si tous les correspondants n'ont pas Access sur leur ordi.
Bonne suite
0