Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 10/03/2011, 11h00   #1
Invité de passage
 
Inscription : mars 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 23
Points : 0
Points : 0
Par défaut Tri d'une zone de liste par plusieurs listes déroulantes

Bonjour à tous,

J'ai regardé les tutos existants sur ce sujet mais je ne saisi pas tout...

Je possède un formulaire comportant plusieurs listes déroulantes inter-agissant entre elles et d'une zone de liste renvoyant les informations liées aux listes déroulantes.

Pour l'instant ma zone de liste ne me sort que l'information dépendant de ma dernière liste déroulante, la plus "restrictive", il n'y a pas de valeurs intermédiaires liées au listes précédentes...

J'aimerai que par défaut lorsque j'ouvre mon formulaire principal ma zone de liste me permette de visualiser l'ensemble de mes infos, qu'en selectionnant la premiere liste deroulante un premier tri soit fait, puis avec la seconde liste un second tri, etc... jusqu'a ma dernière liste déroulante la plus "restrictive"

J'éspère avoir été clair...

Merci de votre aide!
mploki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 16h20   #2
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
re-bonjour mploki
Je te redonne le tuto qui explique exactement ce qu'il faut faire. J'ai essayé chez moi et ça fonctionne à merveille Alors évidemment dans le tuto il s'agit d'un sous-formulaire (comme tu avais fait au début), mais ça fonctionne aussi avec les zones de liste.

Si il y a des points que tu ne comprends pas, regarde dans la FAQ ou d'autres tutos du site J'y ai tout appris. Si tu ne trouves pas les infos que tu cherches, tu n'as qu'à demander.

NB: en bas du tuto, tu peux télécharger une base exemple pour étudier la manière dont elle a été développée et mieux comprendre les explications du tuto.
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 17h24   #3
Invité de passage
 
Inscription : mars 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 23
Points : 0
Points : 0
Le programme me parle plus, je n'avais pas vu qu'on pouvais le télécharger...

seulement il a pas mal de différence avec mon problème, des différences qui simplifie le code mais que n'arrive pas à faire.

Par exemple je ne possède qu'une table et prenons le cas de seulement deux liste déroulante:

Code :
1
2
3
4
5
SELECT DISTINCT  T_Agences.CodeAgence, 
T_Agences.Agence 
FROM T_Agences INNER JOIN T_Employes 
    ON T_Agences.CodeAgence = T_Employes.CodeAgence 
WHERE T_Employes.CodeDiplome=IIf([Formulaires]![F_FiltreSansCode]![cboDiplome]=0,[T_Employes].[CodeDiplome],[Formulaires]![F_FiltreSansCode]![cboDiplome])
Le "INNER JOIN" ne me sert plus
Je ne possède pas de code pour mon autre liste déroulante...

Jsuis vraiment une bille, mais ca me parle que très peu...
mploki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 11h54   #4
Invité de passage
 
Inscription : mars 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 23
Points : 0
Points : 0
Salut paidge,

je bloque toujours sur les mêmes points, mon niveau access n'est pas suffisant pour comprendre pleinement l'ensemble du code du fichier provenant du tuto...

Pour avoir passé du temps dessus, je me rends compte que ce n'est absolument pas fait comme moi (je parle du fichier). Oui il y a des ressemblances (le résultat que je veux obtenir) mais la structure du "programme" n'est pas du tout la même...

Pourrais tu m'aider?

Merci!
mploki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 11h56   #5
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour,

Bah si ! Ta jointure (INNER JOIN) avec la table T_Employes est encore utile puisque tu as besoin du champ CodeDiplome dans ta clause WHERE

Si j'ai bien compris il s'agit d'une requête sur la quelle est basée une de tes listes déroulantes.

Pour info (si jamais ce n'était pas clair pour toi), cette méthode, avec le VraiFaux (Iif en anglais) dans les requêtes de tes listes déroulantes, va te permettre de n'avoir dans tes listes déroulantes uniquement les choix compatibles avec le choix fait dans les autres listes déroulantes.

Exemple : tu as deux listes déroulantes : Civilité, Nom
Si tu choisi "Madame" dans civilité, la liste des noms ne t'affichera que les noms des dames

C'est ce qui permet de faire interagir les listes déroulantes ensemble.

Après il faut mettre à jour ta zone de liste pour que celle-ci ne t'affiche que les enregistrements correspondants aux choix dans tes listes déroulantes.
Toute la méthode est expliquée dans le tuto
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 15h40   #6
Nouveau Membre du Club
 
Homme Romain
Étudiant
Inscription : novembre 2009
Messages : 81
Détails du profil
Informations personnelles :
Nom : Homme Romain
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : novembre 2009
Messages : 81
Points : 29
Points : 29
Bonjour tout le monde,

J'ai fait plusieurs recherche dans ma base de donnée, et je mets à disposition le code que j'utilise dans un formulaire de recherche par rapport à deux listes déroulante, j'espère que celà t'aidera.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String
 
SQL = "SELECT TblCde.idCde, (SELECT TblTiers.NomTiers FROM TblTiers WHERE TblTiers.idTiers=TblCde.idTiers), TblVersement.Commentaire, TblVersement.Debit, TblVersement.Date, (SELECT TblBanque.Banque FROM TblBanque WHERE TblBanque.idBanque=TblVersement.idBanque), (SELECT TblTypeVersement.TypeVersement FROM TblTypeVersement WHERE TblTypeVersement.idTypeVersement = TblVersement.idTypeVersement) FROM TblVersement, TblCde WHERE TblCde.idCde=TblVersement.idCde AND (TblCde.idTiers Between 601 and 603 OR TblCde.idCde Between 651 AND 653)"
 
If Me.chkTypeCharge Then
    SQL = SQL & "And TblCde.idTiers = " & Me.cboTypeCharge & " "
End If
If Me.chkTypeVersement Then
    SQL = SQL & "And TblVersement.idTypeVersement = " & Me.cboTypeVersement & " "
End If
 
SQL = SQL & "ORDER BY Date;"
 
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
 
Me.lstRapport.RowSource = SQL
Me.lstRapport.Requery
 
End Sub
Je me suis beaucoup inspiré du code du tuto.
J'ai donc créer une fonction RefreshQuery, que j'appelle quand je veux mettre à jour ma liste, c'est à dire quand je change une valeur en gros.

En rouge c'est ma requête SQL, la tienne est peut être plus simple peut importe, le but est d'ajouter des conditions en fonction de tes listes déroulantes.
Tu as donc le code brut au début, puis tu ajoutes une condition si la case est cochée dans mon cas, voilà.

Voilà!
RoZyk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h31.


 
 
 
 
Partenaires

Hébergement Web