OVH Cloud OVH Cloud

requête/formulaire à choix multiple

30 réponses
Avatar
zzzz
Bonjour,
j'ai une table avec les colonnes suivantes : ann=E9es, d=E9partement,
secteur, sexe, pr=E9sent=E9s et admis.
Le but est de calculer le taux (admis/pr=E9sent=E9s), mais lequel ? ce
sera celui que choisira l'utilisateur : le taux par ann=E9e et par genre
par exemple, ou par ann=E9e, d=E9partement et secteur, etc...
Je sais faire un formulaire avec liste d=E9roulante o=F9 il choisira sa ou
ses variables, mais je ne sais pas comment faire pour =E9liminer les
colonnes non demand=E9es.
Par exemple si je veux des taux par ann=E9e et par sexe, je ne sais pas
comment =E9liminer les autres colonnes de ma requ=EAte/formulaire .
Je ne sais pas si j'ai =E9t=E9 clair ?

10 réponses

1 2 3
Avatar
zzzz
On 26 avr, 13:07, db wrote:
Le 26/04/2013 10:12, zzzz a écrit :



> D'autres n'auront besoin que du taux des filles pour une ou plusieurs
> années et pour un ou plusieurs département, etc...

> Comment faire pour permettre à l'utilisateur de choisir les années et/
> ou les département et/ou le secteur et/ou le sexe qu'il souhaite ?

En fait, il faut distinguer deux groupes de choix :
        - le premier indiquera quel(s) champ(s) servira (serviron t)  au
regroupement (pour le select et le GROUP BY) pour le calcul du taux :
les quatre noms de champs avec une case à cocher à côté de chaque nom
        - le second indiquera, pour chaque champ, les valeurs ( éventuelles) à
sélectionner dans le WHERE (et non HAVING) : pour chaque champ, la list e
des valeurs possibles, permettant une multi-sélection.

La génération de la requête SQL se fera au clic sur un bouton et la
requête servira comme source du sous-formulaire.

Le sous-formulaire sera prévu pour afficher les 4 champs et le taux.

Bon, évidemment, c'est plus facile à dire qu'à faire, mais ça n'e st pas
infaisable...

db



désolé de revenir si tard... le week-end et le reste.
Je vais essayer ce que tu proposes...
Avatar
zzzz
Voici ce que j'ai fait :
- un groupe d'option avec 4 cases à cocher, qui devrait me permettre
de choisir les champs qui s'afficheront et sur lesquels sera basé le
calcul du taux d'une part
- 4 zones de listes déroulantes qui permettront de choisir les valeurs
des champs sélectionnés dans le groupe d'option. Peut-on faire une
multisélection dans une liste déroulante ?

Je ne vois pas du tout comment relier ces 2 objets.
Tout ce que je sais faire pour l'instant, c'est d'afficher le résultat
d'une requête X si je clique sur une case à cocher
ou afficher le résultat si je clique sur toutes les zones de listes
déroulantes.

Après pour l'affichage, que ce soit à l'écran ou sur le sous-
formulaire, ça je pense que ce n'est pas compliqué.
Le plus dur c'est comment faire pour arriver à la requête adéquate en
cochant les cases (des champs) et en sélectionnant les valeurs ?
Avatar
Gloops
zzzz a écrit, le 29/04/2013 16:33 :
Voici ce que j'ai fait :
- un groupe d'option avec 4 cases à cocher, qui devrait me permettre
de choisir les champs qui s'afficheront et sur lesquels sera basé le
calcul du taux d'une part
- 4 zones de listes déroulantes qui permettront de choisir les valeur s
des champs sélectionnés dans le groupe d'option. Peut-on faire une
multisélection dans une liste déroulante ?

Je ne vois pas du tout comment relier ces 2 objets.
Tout ce que je sais faire pour l'instant, c'est d'afficher le résulta t
d'une requête X si je clique sur une case à cocher
ou afficher le résultat si je clique sur toutes les zones de listes
déroulantes.

Après pour l'affichage, que ce soit à l'écran ou sur le sous-
formulaire, ça je pense que ce n'est pas compliqué.
Le plus dur c'est comment faire pour arriver à la requête adéquat e en
cochant les cases (des champs) et en sélectionnant les valeurs ?




Je suggère de créer deux collections, une pour les contrôles concer nés
par la clause HAVING, l'autre pour les autres ...

Si je n'ai pas trop oublié :
Dim Col1 As New Collection
Dim Col2 As New Collection


Col1.Add "Objet1"
Col1.Add "Objet2"
Col1.Add "Objet3"
Col1.Add "Objet4"
Col1.Add "Objet5"
Col1.Add "Objet6"
Col1.Add "Objet7"
Col1.Add "Objet8"

Col2.Add "Objet1"
Col2.Add "Objet2"
Col2.Add "Objet3"
Col2.Add "Objet4"

En remplaçant Objetn par les noms des contrôles.

Comme ça ensuite,

For Each O in Col1
If O <> Null Then
strSQL = strSQL + "" 'prise en compte de O
End If
Next

For Each O in Col2
If O <> Null Then
strSQL = strSQL + "" 'prise en compte de O,
'mais pas forcément la même que ci-dessus
End If
Next

Je te laisse mettre ce qu'il faut dans les guillemets ?

Si je ne m'abuse d'ailleurs il y a une collection qui sera utilisée deu x
fois pendant la création de la requête.

Pour le O <> Null, j'ai évoqué le sujet dans un message précédent , ça
peut être légèrement plus sophistiqué, sans atteindre des montagn es
d'abstraction.

Je n'ai pas mis l'insertion des AND, dans le strSQL.
Quand il n'y aura plus que ça on aura déjà franchi un pas j'ai l'im pression.

On peut se passer des collections mais alors il faut écrire du code pou r
chacun des contrôles, c'est quand même plus lourd.
Avatar
zzzz
On 29 avr, 19:00, Gloops wrote:
zzzz a écrit, le 29/04/2013 16:33 :



> Voici ce que j'ai fait :
> - un groupe d'option avec 4 cases à cocher, qui devrait me permettre
> de choisir les champs qui s'afficheront et sur lesquels sera basé le
> calcul du taux d'une part
> - 4 zones de listes déroulantes qui permettront de choisir les valeur s
> des champs sélectionnés dans le groupe d'option. Peut-on faire une
> multisélection dans une liste déroulante ?

> Je ne vois pas du tout comment relier ces 2 objets.
> Tout ce que je sais faire pour l'instant, c'est d'afficher le résulta t
> d'une requête X si je clique sur une case à cocher
> ou afficher le résultat si je clique sur toutes les zones de listes
> déroulantes.

> Après pour l'affichage, que ce soit à l'écran ou sur le sous-
> formulaire, ça je pense que ce n'est pas compliqué.
> Le plus dur c'est comment faire pour arriver à la requête adéquat e en
> cochant les cases (des champs) et en sélectionnant les valeurs ?

Je suggère de créer deux collections, une pour les contrôles concer nés
par la clause HAVING, l'autre pour les autres ...

Si je n'ai pas trop oublié :
Dim Col1 As New Collection
Dim Col2 As New Collection

Col1.Add "Objet1"
Col1.Add "Objet2"
Col1.Add "Objet3"
Col1.Add "Objet4"
Col1.Add "Objet5"
Col1.Add "Objet6"
Col1.Add "Objet7"
Col1.Add "Objet8"

Col2.Add "Objet1"
Col2.Add "Objet2"
Col2.Add "Objet3"
Col2.Add "Objet4"

En remplaçant Objetn par les noms des contrôles.

Comme ça ensuite,

For Each O in Col1
        If O <> Null Then
                strSQL = strSQL + "" 'prise en compte d e O
        End If
Next

For Each O in Col2
        If O <> Null Then
                strSQL = strSQL + "" 'prise en compte d e O,
                        'mais pas forcément la même que ci-dessus
        End If
Next

Je te laisse mettre ce qu'il faut dans les guillemets ?

Si je ne m'abuse d'ailleurs il y a une collection qui sera utilisée deu x
fois pendant la création de la requête.

Pour le O <> Null, j'ai évoqué le sujet dans un message précédent , ça
peut être légèrement plus sophistiqué, sans atteindre des montagn es
d'abstraction.

Je n'ai pas mis l'insertion des AND, dans le strSQL.
Quand il n'y aura plus que ça on aura déjà franchi un pas j'ai l'im pression.

On peut se passer des collections mais alors il faut écrire du code pou r
chacun des contrôles, c'est quand même plus lourd.



Le problème c'est que je ne sais pas faire beaucoup de choses ; et
dans vos réponses vous partez du principe que je sais faire certaines
choses. C'est normal étant donné que vous ne savez ce que je sais
faire et ce que je ne sais pas faire
les collections ? je ne connais pas, une recherche sur google m'a un
peu découragé
le code de création des collections , le mettre où ? dans un module ?
un évènement ?
Avant les dim il me semble qu'il y a quelque chose du genre Sub...
etc...
Avatar
Gloops
zzzz a écrit, le 30/04/2013 10:57 :
Le problème c'est que je ne sais pas faire beaucoup de choses ; et
dans vos réponses vous partez du principe que je sais faire certaines
choses. C'est normal étant donné que vous ne savez ce que je sais
faire et ce que je ne sais pas faire
les collections ? je ne connais pas, une recherche sur google m'a un
peu découragé
le code de création des collections , le mettre où ? dans un module ?
un évènement ?
Avant les dim il me semble qu'il y a quelque chose du genre Sub...
etc...




Ah, oui. En somme, le sujet, c'est : initiation à Access. C'est vrai qu e
ça va être un peu plus long pour arriver à ce dont nous parlions.

Une recherche Google sur le sujet m'a rappelé quelques sites utiles,
dont au moins certains émanent d'anciens intervenants du forum :

http://www.self-access.com/cms/access/
http://www.info-3000.com/access/cours/
http://officesystemaccess.seneque.net/
http://www.3stone.be/access/index.php

Avec ça il devrait y avoir moyen d'avoir les bases pour être capable de
créer un formulaire avec un bouton qui dit bonjour (parce que le code
MsgBox "Bonjour" est vite tapé, et au moins comme ça on est sûr
d'accéder au module du formulaire, d'avoir créé une méthode
événementielle liée au clic sur le bouton, et c'est déjà un bon début.

Il devrait y avoir moyen aussi d'avoir les idées nettes sur ce que sont
une table, une requête, un champ.

Par ailleurs, il faudra aussi s'intéresser à la syntaxe du langage SQ L.

Les collections on verra un peu plus tard : ça permet de structurer le
code de façon plus élégante, mais ce n'est pas une priorité.

Il serait bon de passer un peu de temps sur les différents événemen ts
liés à un formulaire, et à quels moments ils se déclenchent, mê me si il
est vrai que ça risque de peu entrer en ligne de compte pour la questio n
qui nous occupait, puisque nous allons probablement utiliser un
formulaire indépendant, c'est-à-dire pas lié à des données.

Avec ça on n'a pas fait tout le tour d'Access, mais on devrait déjà
commencer à y voir plus clair.

Si un point est difficile à trouver ou n'est pas clair, demander des
précisions ...
Avatar
zzzz
On 30 avr, 16:34, Gloops wrote:
zzzz a écrit, le 30/04/2013 10:57 :

> Le problème c'est que je ne sais pas faire beaucoup de choses ; et
> dans vos réponses vous partez du principe que je sais faire certaines
> choses. C'est normal étant donné que vous ne savez ce que je sais
> faire et ce que je ne sais pas faire
> les collections ? je ne connais pas, une recherche sur google m'a un
> peu découragé
> le code de création des collections , le mettre où ? dans un module ?
> un évènement ?
> Avant les dim il me semble qu'il y a quelque chose du genre Sub...
> etc...

Ah, oui. En somme, le sujet, c'est : initiation à Access. C'est vrai qu e
ça va être un peu plus long pour arriver à ce dont nous parlions.

Une recherche Google sur le sujet m'a rappelé quelques sites utiles,
dont au moins certains émanent d'anciens intervenants du forum :

http://www.self-access.com/cms/access/http://www.info-3000.com/access/cou rs/http://officesystemaccess.seneque.net/http://www.3stone.be/access/index. php

Avec ça il devrait y avoir moyen d'avoir les bases pour être capable de
créer un formulaire avec un bouton qui dit bonjour (parce que le code
MsgBox "Bonjour" est vite tapé, et au moins comme ça on est sûr
d'accéder au module du formulaire, d'avoir créé une méthode
événementielle liée au clic sur le bouton, et c'est déjà un bon début.

Il devrait y avoir moyen aussi d'avoir les idées nettes sur ce que sont
une table, une requête, un champ.

Par ailleurs, il faudra aussi s'intéresser à la syntaxe du langage SQ L.

Les collections on verra un peu plus tard : ça permet de structurer le
code de façon plus élégante, mais ce n'est pas une priorité.

Il serait bon de passer un peu de temps sur les différents événemen ts
liés à un formulaire, et à quels moments ils se déclenchent, mê me si il
est vrai que ça risque de peu entrer en ligne de compte pour la questio n
qui nous occupait, puisque nous allons probablement utiliser un
formulaire indépendant, c'est-à-dire pas lié à des données.

Avec ça on n'a pas fait tout le tour d'Access, mais on devrait déjà
commencer à y voir plus clair.

Si un point est difficile à trouver ou n'est pas clair, demander des
précisions ...



merci, je vais voir ces 4 liens
Avatar
zzzz
Oui, je connais ces sites depuis longtemps; je ne suis pas débutant;
j'utilise SQL régulièrement depuis une dizaine d'années.
Mais à part les tables et les requêtes , je ne connais pas les
formulaires.
D'habitude mes collègues et supérieurs me demande de leur sortir un
tableau suivant tel ou tel critère et je crée la requête en fonction
de ce qu'on me demande. Mais là, ils veulent automatiser le travail
(sans passer par moi).
Donc, je crois que je vais laisser tomber... sinon j'irais aussi voir
sur MPFExcel quand j'aurais du temps...
Avatar
Gloops
zzzz a écrit, le 03/05/2013 16:57 :
Oui, je connais ces sites depuis longtemps; je ne suis pas débutant;
j'utilise SQL régulièrement depuis une dizaine d'années.
Mais à part les tables et les requêtes , je ne connais pas les
formulaires.
D'habitude mes collègues et supérieurs me demande de leur sortir un
tableau suivant tel ou tel critère et je crée la requête en fonct ion
de ce qu'on me demande. Mais là, ils veulent automatiser le travail
(sans passer par moi).
Donc, je crois que je vais laisser tomber... sinon j'irais aussi voir
sur MPFExcel quand j'aurais du temps...





Ah, si c'est juste pour le faire une fois et ensuite oublier, c'est vrai
que ça fait beaucoup d'effort par rapport au but, et il n'est pas exclu
qu'on trouve un produit tout fait sur le marché (demander au CXP, mais
je ne suis pas sûr que leurs recherches soient gratuites ; il y a les
moteurs de recherche sinon mais qui risquent de noyer les réponses au
milieu d'autre chose).

Autrement, un intérimaire sera content de passer quelques jours
là-dessus ;) Je dis quelques jours en me disant qu'on en profitera
peut-être pour lui faire faire autre chose pendant qu'on y est ...
Avatar
db
Le 29/04/2013 16:33, zzzz a écrit :

Peut-on faire une multisélection dans une liste déroulante ?



Une liste déroulante, non, il faut une zone de liste simple.

Quelle version d'Access utilisez-vous ?
Avatar
zzzz
On 6 mai, 19:07, db wrote:
Le 29/04/2013 16:33, zzzz a écrit :

> Peut-on faire une multisélection dans une liste déroulante ?

Une liste déroulante, non, il faut une zone de liste simple.

Quelle version d'Access utilisez-vous ?




MSOffice Pro 2003 (je lis dans l'à propos : Partie de MSOffice Pro
2003!!!)
1 2 3