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

Access Discussion :

Trier les colonnes d'une zone de liste


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 18
    Points
    18
    Par défaut Trier les colonnes d'une zone de liste
    Bonjour,

    j'aimerai faire la chose suivante mais je ne sais pas si cela est possible et comment le faire :

    Je vais prendre l'exemple du moteur de recherche de cafeine.
    Les resultats sont affiches dans une zone de liste.
    Dans cette zone de liste, la 1e ligne correspond au champ de la table.
    J'aimerai pouvoir trier les resultats obtenus en fonction des champs.
    Mais le champ sera choisit que lorsqu'on clique dessus avec la souris.

    voila mon souci...
    si on ne peut pas, est ce que quelqu'un pourrait me donner une autre solution qui permettrait le tri ???

    voila voila

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Autre méthode :

    Tu peux créer un champs "Zone de liste modifiable" pour trier ta zone de liste.

    "Sur changement" tu intègre la procédure événementielle de tri en terminant par une macro pour actualiser ta liste.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Mais est ce qu'on peut choisir le champ sur lequel trier les informations ??
    ou est ce que le champ est fixé dans le code ???

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Oui, l'origine source de ta zone de liste modifiable doit être une "liste valeurs" dans le contenu, tu liste les entêtes de colonne que tu veux trier.

    Puis tu rentre la procédure événementielle suivante :

    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
    22
    23
    24
    Private Sub MenuTri_Change()
     
    Dim wSQL As String
     
    Set wQueryDef = CurrentDb.QueryDefs("Le nom de la requête avec les champs de ta liste ")
    wSQL = ""
     
    wSQL = wSQL & "SELECT [Nom de ta table].Nom d’un des champs, "
    wSQL = wSQL & "[Nom de ta table].Nom d’un des champs, "
    ainsi de suite avec tous les champs concernés
    wSQL = wSQL & "FROM Nom table "
     
    If [MenuTri] = "Titre d’un champs à trier" Then
        wSQL = wSQL & "ORDER BY [Nom de ta table].Nom d’un des champs;"
    End If
     
    A répéter pour chaque champ
     
    wQueryDef.SQL = wSQL
    wQueryDef.Close
     
    DoCmd.RunMacro ("Nom de la Macro d’actualisation de ta liste")
     
    End Sub

  5. #5
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Ou alors, toujours avec une zone de liste modifiable:

    Critère est la zone de liste modifiable des NOMS de champs (Liste de valeurs)
    Liste2 est ta zone de liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Critère_AfterUpdate()
    Me.Liste2.RowSource = "SELECT Champ1, Champ2, ...FROM Table ORDER BY " & Critère & ""
    Me.Liste2.Requery
    End Sub
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  6. #6
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    En reprenant l'exemple de Caféine tu peux très bien complèter ton formulaire.

    1° tu crée un champ caché avec commen nom par exemple "TriColonne"
    2° au dessus de chaque colonne tu crées une étiquette avec le nom de la colonne.
    3° avec l'étiquette tu mets le code suivant dans l'événement sur clic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    me![TriColonne] = "Nom du champ" ' c'est à dire du champ sousjacent à ta colonne
    RefreshQuery
    tu fais cela pour chaque étiquette avec chaque fois le nom du champ correspondant

    puis tu complètes le code de RefreshQuery

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT CodMedia, Titre, Auteur, Famille, Type FROM Medias Where Medias!CodMedia <> 0 "
    If Me.chkAuteur Then
        SQL = SQL & "And Medias!Auteur like '*" & Me.txtRechAuteur & "*' "
    End If
    If Me.chkFamille Then
        SQL = SQL & "And Medias!Famille = '" & Me.cmbRechFamille & "' "
    End If
    If Me.chkResume Then
        SQL = SQL & "And Medias!Résumé like '*" & Me.txtRechResume & "*' "
    End If
    If Me.chkTitre Then
        SQL = SQL & "And Medias!Titre like '*" & Me.txtRechTitre & "*' "
    End If
    If Me.chkType Then
        SQL = SQL & "And Medias!Type = '" & Me.cmbRechType & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & "Order by "& me![Tricolonne]&";"
     
    Me.lblStats.Caption = DCount("*", "Medias", SQLWhere) & " / " & DCount("*", "Medias")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
    de cette manière chaque fois que tu cliques sur l'étiquette correspondante le tri se fait. Avec encore du code tu peux faire que çà trie croissant et non décroissant

  7. #7
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ou bien utiliser un sous formulaire... Car de toute façon la sélection sur une zone de liste se fait par ligne entière, il n'y a pas de notion de colonne sélectionnée

  8. #8
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Oui Tofalu mais je suppose que dans ce cas ancylia aimerais pouvoir trier les colonnes de la liste pour rechercher des informations plus simplement. C'est ce que j'utilise pour faciliter la recherche dans une liste ou une list déroulante afin de rechercher plus rapidement les informations

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Merci pout vos réponses

    en effet, ce que je recherche correspond plus à ce que tu proposes alexandre...

    merci je vais adapter cela à mes données

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] mettre a jour toutes les valeurs d'un colonne dans une zone de liste
    Par yieiyiei dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/04/2015, 21h41
  2. largeur de colonne dans une zone de liste
    Par fsautejeau dans le forum Access
    Réponses: 2
    Dernier message: 25/08/2006, 13h29
  3. [Débutant] Copier les données d'une zone de liste
    Par a2line dans le forum Access
    Réponses: 8
    Dernier message: 01/06/2006, 16h06
  4. Réponses: 3
    Dernier message: 22/03/2006, 09h47
  5. [VBA] Trier les colonnes d'une listview
    Par alncool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/09/2005, 14h12

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