IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Tri d'une zone de liste par plusieurs listes déroulantes


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 23
    Points : 9
    Points
    9
    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!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    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.
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    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!

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    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
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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à!

Discussions similaires

  1. Remplacer une zone de texte par une liste
    Par guillome29 dans le forum IHM
    Réponses: 1
    Dernier message: 22/04/2013, 07h23
  2. Tri d'une zone de liste avec origine source : liste valeurs?
    Par electrosat03 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/05/2009, 21h01
  3. Tri dans une zone de liste
    Par scorpion1611 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/02/2008, 15h00
  4. Tri d'une zone de liste
    Par syldudu dans le forum IHM
    Réponses: 7
    Dernier message: 19/01/2007, 17h06
  5. Tri d'une zone de liste par bouton
    Par illight dans le forum Access
    Réponses: 7
    Dernier message: 09/11/2005, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo