Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2010, 15h05   #1
Membre confirmé
 
Avatar de Oliv'83
 
Homme Mon prénom cherche, c'est pas très dur...
Directeur commercial
Inscription : mars 2008
Messages : 356
Détails du profil
Informations personnelles :
Nom : Homme Mon prénom cherche, c'est pas très dur...
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Directeur commercial
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : mars 2008
Messages : 356
Points : 216
Points : 216
Par défaut Décompte de résultat d'une enquête

Bonjour à tous,

J'ai une table qui contient 29 champs qui sont des critères d'une enquête. Chaque champ peut avoir une valeur de 1 à 4 (ces champs sont tous numériques).
Je ne vois pas comment faire pour connaitre le nombre de réponses "1" puis de réponse "2" puis de réponse "3" et enfin "4" pour chacun des critères.

J'ai essayé avec la fonction "compte" mais je n'arrive pas à rédiger correctement la définition du champ.

Le but final est de connaitre le pourcentage de 1,2,3et 4 par critère.

Si quelqu'un peut me donner une piste je suis preneur.

Merci d'avance

Olivier
Oliv'83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 15h14   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Oliv'83,

Une requête "analyse croisée" devrait convenir.
Passes par l'assistant "requête analyse croisée", c'est très bien expliqué (ligne, colonne, donnée).
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 17h25   #3
Membre confirmé
 
Avatar de Oliv'83
 
Homme Mon prénom cherche, c'est pas très dur...
Directeur commercial
Inscription : mars 2008
Messages : 356
Détails du profil
Informations personnelles :
Nom : Homme Mon prénom cherche, c'est pas très dur...
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Directeur commercial
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : mars 2008
Messages : 356
Points : 216
Points : 216
Bonsoir Richard,

Merci de ton aide mais soit je suis particulièrement mauvais (c'est tout à fait possible) soit ce n'est pas la bonne manière...

J'ai réussi via Excel a obtenir le document que je souhaitais mais je pense qu'on doit pouvoir le réaliser uniquement à partir d'Access c'est pourquoi je ne clos pas ce post. Dans Excel je me suis servi de la fonction Que j'ai découverte pour l'occasion.

Je suis prêt à vous poster la table dans laquelle se trouvent les résultats à analyser car c'est peut être dans sa conception qu'il y a une erreur?

Merci d'avance

Oliv'
Oliv'83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 18h28   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Je crois que j'ai mal compris ta question d'origine., désolé.
Ta table semble avoir la structure :
- Id_record (clé primaire) (peut-être)
- nom sondé
- critere1
- critere2
- critere3
...
- critere29
les valeurs des 29 criteres étant 1, 2, 3 ou 4.


Si c'est le cas :

crées une table T1 :
- critere
- valeur
- comptage

crées et lances 29 requêtes "ajout" :
Code sql :
1
2
3
4
INSERT INTO T1 (critere, valeur, Comptage)
SELECT "criterex", criterex, Count(*)
FROM TaTable
GROUP BY "criterex", criterex
==> ou par code (je ne connais pas VBA), variabiliser le "x", dans une boucle, pour obtenir "critere" & x.

Enfin, la requête "analyse croisée" suivante (je savais bien qu'elle allait arriver à un moment ou à un autre...) :
Code sql :
1
2
3
4
5
TRANSFORM Sum(Comptage)
SELECT critere
FROM T1
GROUP BY critere
PIVOT valeur;
==> si je me suis planté dans l'ordre des champs, passes par l'assistant "requête analyse croisée" avec la table T1 : c'est très bien expliqué.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/12/2010, 16h45   #5
Membre confirmé
 
Avatar de Oliv'83
 
Homme Mon prénom cherche, c'est pas très dur...
Directeur commercial
Inscription : mars 2008
Messages : 356
Détails du profil
Informations personnelles :
Nom : Homme Mon prénom cherche, c'est pas très dur...
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Directeur commercial
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : mars 2008
Messages : 356
Points : 216
Points : 216
Bonjour Richard,

En effet tu as vu juste la structure de ma table est exactement celle que tu décris

Comme je n'avais pas envie de me faire les 29 requêtes à chaque fois que j'ai besoin d'analyser mes résultats, je me suis lancé dans une tentative de rédaction d'un code VBA. Je dois dire que ce fut assez folklorique (surtout la rédaction de SQL1...) mais je pense y être arrivé (en tout cas il fonctionne chez moi...) le voici :

Code :
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
35
36
37
Dim Db As DAO.Database
Dim NomTable As DAO.TableDef
Dim NomTableDestination As String
Dim MonChamp As DAO.Field
Dim MaTable As String
Dim MonSQL As String
Dim MonSQL1 As String
 
 
MaTable = "tbl_Enquete_Satisfaction"
NomTableDestination = "tbl_Enquete_Satisfaction_Analyse" ' T1 dans ton explication
 
Set Db = CurrentDb
Set NomTable = Db.TableDefs(MaTable)
 
'Parcourt de tous les champs de la table
For Each MonChamp In NomTable.Fields
 
'Définition de la requête d'ajout
MonSQL = "INSERT INTO " & NomTableDestination & " (Critere, Valeur, Comptage )"
MonSQL1 = "SELECT " & " '" & MonChamp.Name & "'" & " AS Expr1," & MaTable & "." & MonChamp.Name & ", Count(*) AS Expr2 FROM " & MaTable & " GROUP BY " & " '" & MonChamp.Name & "'" & ", " & MaTable & "." & MonChamp.Name & ";"
 
MonSQL = MonSQL & MonSQL1
 
'Désactivation des messages d'avertissement d'execution de la requête d'ajout
DoCmd.SetWarnings False
'Execution de la requête d'ajout
DoCmd.RunSQL MonSQL
'Réactivation des messages d'avertissement d'execution de la requête d'ajout
DoCmd.SetWarnings True
 
Next MonChamp
 
'Fermeture et liberation des objets
Db.Close
Set NomTable = Nothing
Set Db = Nothing
Il doit faire bondir les pro en VBA mais je le met quand même au cas où il pourrait aider quelqu'un.

Ensuite tout fonctionne à merveille (ta requête Analyse Croisée est parfaite). Merci beaucoup Richard.

Bonne soirée à tous

Oliv'
Oliv'83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h57.


 
 
 
 
Partenaires

Hébergement Web