Access

Résolu/Fermé
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 - 14 mai 2011 à 21:27
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 - 16 mai 2011 à 00:02
Bonjour,
Je suis sous Access 2007 et j'aimerai intégrer le champ "Tous" dans une zone de liste déroulante.
C'est à dire, par exemple, dans une zone de liste médaille je souhaiterais faire apparaitre ;
Toutes les médailles
Or
Argent
Bronze.

Ce champ "toutes les médailles" doit être crée de quelle façon ?

Merci d'avance !

5 réponses

croumble Messages postés 640 Date d'inscription samedi 24 avril 2010 Statut Membre Dernière intervention 21 novembre 2011 37
14 mai 2011 à 22:05
Il me semble qu'il faut que sélectionne tes plages de données avec or argent bronze et tu fais clique droit créer une liste déroulante
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
14 mai 2011 à 22:10
Merci de ta réponse mais en fait c'est pas ça mon problème..
J'ai déjà fait ma liste déroulante (avec comme données "Toutes les médailles", "Or", "Argent", "Bronze"), et lorsque que sélectionne "Or" ça m'affiche les bons résultats (pareil pour Argent et Bronze).
Mon problème c'est lorsque je clique sur "Toutes les médailles", j'aimerai que ça m'affiche les résultats des médailles d'or ET d'argent ET de bronze.
0
croumble Messages postés 640 Date d'inscription samedi 24 avril 2010 Statut Membre Dernière intervention 21 novembre 2011 37
14 mai 2011 à 22:12
Donc tu veux faire une addition de toutes les médailles?
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
14 mai 2011 à 22:15
Oui c'est ça.
0
croumble Messages postés 640 Date d'inscription samedi 24 avril 2010 Statut Membre Dernière intervention 21 novembre 2011 37
14 mai 2011 à 22:18
Je ne sait pas trop si tu te met dans ta cellule que tu veut et que tu écrit le calcul?
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
14 mai 2011 à 22:23
J'ai déjà essayé un truc du genre ;
If (Zone de liste déroulante) = "<<Toutes médailles>>" Then
(liste de résultats) ="Or" And "Argent" And "Bronze"
End If
it
mais sans résultats..
0
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 142
Modifié par Syzygy le 14/05/2011 à 22:44
Bonjour,

Suite au commentaire ci-dessus, si la formule est Ok, je vous suggère d'utiliser l'opérateur "Or" à la place de "And". En effet la signification de l'opérateur et (and) sous Access est différence de celle en français courant.
Dans ce cas de figure, Access cherche les médailles qui sont simultanément en or, en argent et en bronze, d'où l'absence de résultat.

L'opérateur "Or"(ou) effectuera lui la recherche en prenant les médailles qui sont ou en or, ou en argent ou en bronze.

Bonne soirée,
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
14 mai 2011 à 22:48
Bonjour,
Merci de vous être penché sur le sujet mais j'ai essayé avec "OR" et j'ai toujours le même problème.. Rien ne s'affiche.
0
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 142
14 mai 2011 à 22:59
Repartons depuis le début dans ce cas. Si j'ai bien compris vous travaillez sur un formulaire contenant la-dite liste et vous souhaitez voir s'afficher les résultats de quel manière ? Dans un sous-formulaire inclue dans le formulaire parent, dans un autre formulaire/état ou simplement effectuer une requête et l'afficher en "brut" ?

Si vous aviez possibilité de zipper votre base de données et de la mettre sur http://www.cijoint.fr/ cela faciliterait mes recherches.
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
14 mai 2011 à 23:12
J'ai plusieurs liste déroulante qui me permettent de trier les résultats et les afficher dans une zone de liste.

Les fichiers avec l'extension .accdb ne peuvent pas être déposés sur http://www.cijoint.fr/
Voici un autre lien ; [url=https://www.luanagames.com/index.fr.html]Projet.accdb[/url]

Il s'agit du formulaire "Consultation par JO" (pour faire apparaitre des résultats il faut sélectionner l'année 2010)
Merci de votre aide.
0
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 142
15 mai 2011 à 00:40
Bonsoir,

Je suis parvenu a trouvé une solution (peu élégante je l'avoue) à votre problème.
Dans le formulaire "Consultation par JO" en mode création, ouvrez le contenu de votre contrôle "Liste10" puis basculez en affichage SQL.

Copiez-collez l'instruction suivante :

SELECT Résultats.Jeux, Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Résultats.Athlète, Résultats.Sport
FROM Médaille INNER JOIN ((Athlètes INNER JOIN Résultats ON Athlètes.IdAthlète = Résultats.Athlète) INNER JOIN Sports ON Résultats.Sport = Sports.IdSport) ON Médaille.IdMédaille = Résultats.Médaille
GROUP BY Résultats.Jeux, Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Résultats.Athlète, Résultats.Sport, Résultats.Médaille
HAVING (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,1,[Formulaires]![Consultation par JO]![Modifiable12]))) OR (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,2,[Formulaires]![Consultation par JO]![Modifiable12]))) OR (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,3,[Formulaires]![Consultation par JO]![Modifiable12])));

Enregistrez le tout et cn'hésitez pas à repasser en affichage "création de requete" pour visualiser le fonctionnement de la requête.

Cette solution n'est pas optimale mais fonctionne. N'hésitez pas à me suggérer une meilleure solution.

Bonne soirée,
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
15 mai 2011 à 10:18
Bonjour,
Merci pour votre solution celle-ci fonctionne !

Mais, je ne peux pas, par exemple, créer une liste déroulante avec comme information "Tous les pays" ? Ce serait beaucoup trop de travail à écrire un critère pour chaque pays.. Et si je souhaiterai créer un pays, via le formulaire "Ajouter un nouveau pays", celui-ci ne serai pas mis à jour dans la requête..

Je vais essayer de chercher une autre solution. Si vous avez une autre idée, je suis preneur.
Merci.

Bonne journée.
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
15 mai 2011 à 17:26
J'ai trouvé ceci :
https://www.developpez.net/forums/d1014562/logiciels/microsoft-office/access/requetes-sql/filtre-zone-liste/
SI j'ai bien compris, il faut crée une requête union qui va faire apparaitre "Tous" en haut de la liste déroulante. (Chose que j'ai faite)
Ensuite il faut en quelques sorte lui dire en VBA que lorsque l'on sélectionne 'Tous' il affiche tous les résultats ?
0
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 142
15 mai 2011 à 17:44
Bonjour,

Oui l'une des solutions serait d'introduire la requête SQL directement en VBA. Toutefois, (après avoir survolée le post je l'avoue) la requête Union ne me semble pas adaptée car, comme dans l'instruction que je vous ai transmis cette nuit, vous devriez gérer toutes les possibilités manuellement... Ce qui fait que nous nous retrouvons au point de départ.

Si vous n'avez pas trouver de solution d'ici là, je me pencherai à nouveau sur votre base ce soir.

Bonne recherche,
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
15 mai 2011 à 17:48
Oui c'est ce que je me disais, c'est une autre façon de faire mais du même style que votre solution où il faut faire tous les champs de la table manuellement.

Pour le moment je n'ai pas trouvé d'autre solution.
Merci.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
15 mai 2011 à 19:57
Bonjour
Si j'ai bien compris sous access tu veux faire un tri sur les différentes médailles a partir d'une liste déroulante.
J'ai fait un petit exemple sous access 2003 que tu trouveras sur ce lien.
Cela te convient-il?

http://www.cijoint.fr/cjlink.php?file=cj201105/cij002hXft.zip
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
Modifié par Turbus le 15/05/2011 à 16:04
Personne d'autre n'a une solution ?
Merci.
0

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

Posez votre question
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 142
15 mai 2011 à 21:55
J'ai trouvé !

J'ai remodifié la structure de votre formulaire pour le rendre plus parlant (à mes yeux) en basant toutes vos listes sur les désignations plutôt que sur la valeur de la clé primaire (c'est ainsi plus lisible dans les formules que j'ai utilisé).

J'ai ensuite ajouté un sport à la liste des sports que j'ai intitulé "(Tous les sports)" Pour le trouver en haut de la liste.

Enfin, j'ai utilisé la formule suivante, par exemple pour les médailles, pour la zone de critère :

VraiFaux([Formulaires]![Consultation par JO]![Modifiable12]="Toutes médailles";[Médaille].[Médaille];[Formulaires]![Consultation par JO]![Modifiable12])

Je vous donne également l'instruction SQL de la requête car j'ai apporté quelques modifications à la structure de votre requête :

SELECT Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Jeux.[Année JO]
FROM (Athlètes INNER JOIN (Jeux INNER JOIN (Médaille INNER JOIN Résultats ON Médaille.IdMédaille = Résultats.Médaille) ON Jeux.IdJO = Résultats.Jeux) ON Athlètes.IdAthlète = Résultats.Athlète) INNER JOIN Sports ON Résultats.Sport = Sports.IdSport
WHERE (((Sports.Sport)=IIf([Formulaires]![Consultation par JO]![Modifiable28]="(Tous les sports)",[Sports].[Sport],[Formulaires]![Consultation par JO]![Modifiable28])) AND ((Médaille.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]="Toutes médailles",[Médaille].[Médaille],[Formulaires]![Consultation par JO]![Modifiable12])) AND ((Jeux.[Année JO])=[Formulaires]![Consultation par JO]![Modifiable2]))
GROUP BY Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Jeux.[Année JO];

Un dernier conseil d'ordre général, utilisez des noms de champs représentatifs lorsque vous concevez vos formulaires car j'ai eu un peu de mal à m'y retrouvé entre le champ "Modifiable2" et "Modifiable 28". De plus la maintenance est plus aisée lorsque les noms sont significatifs.

Si cela ne fonctionne pas je peux vous mettre le fichier à jour sur cijoint.

Bonne soirée,
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
Modifié par Turbus le 15/05/2011 à 22:19
Bonjour
Je viens d'essayer mais ça ne fonctionne pas, rien ne s'affiche. Il doit y avoir une incohérence de nom quelques part.
Oui si c'est possible, j'aimerai bien la base de donnée sur laquelle vous avez apportez des modifications comme ça je peux voir les modifications que vous avez faites pour rendre le formulaire "plus parlant". Et aussi voir pourquoi ça ne fonctionne pas chez moi.

Merci et bonne soirée.
0
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 142
15 mai 2011 à 22:37
Voici le lien pour le fichier :

http://www.cijoint.fr/cjlink.php?file=cj201105/cijAjDAKMX.zip

Bonne réception,
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
15 mai 2011 à 22:50
Merci,
Les " tables" R_Croisement_médaille que vous avez crée correspondent à quoi ?
Cela sert pour faire ce que je cherche à faire ou c'est simplement pour rendre la base de données plus parlante ?
0
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 142
15 mai 2011 à 23:00
R_croisement_médaille est la requête qui contient les résulatsqui sont affichés dans votre zone de résultat, c'est donc ce que vous cherchez à faire.

J'ai comme habitude de mettre ce type de requête directement accessible afin de pouvoir les modifier plus rapidement. Ce n'est pas une obligation, vous auriez pu créer la reqûete directement dans le formulaire.

Si vous voulez la faire disparaitre, faites d'abord un copier de l'instruction SQL, supprimez là puis retourner dans votre formulaire en mode création et modifiez la source de donnée de votre contrôle affichant la liste de résultat. Basculez en affichage SQL et coller l'instruction. Enregistrez et çà devrait marcher.
0
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 6
15 mai 2011 à 23:19
D'accord, j'ai compris. C'est juste que je ne faisais jamais "enregistrer sous" pour les requêtes. J'ai pour habitude de créer directement la requête et de la "laisser" dans le formulaire. (si on peut appelé ça une habitude puisque c'est la première base de données que je fait)

Par contre, j'ai coller l'instruction SQL et ça ne fonctionne toujours pas. J'ai vérifié les noms des différents champs et cela semble correct..
0