zone de liste sous ACCESS

zone de liste sous ACCESS - VB/VBA/VBS - Programmation

Marsh Posté le 14-04-2005 à 12:09:17    

Bonjour,
 
J'ai un formulaire comportant une zone de liste avec en-tête et, je cherche à récupérer l'indice d'une colonne. En fait, je souhaite que lorsque je clique sur une en-tête de colonne cela me tri le contenu de la zone de liste en fonction de la colonne spécifée.
Pour le moment, je n'ai rien trouvé qui me permette de faire cela donc, toutes idées seront les bienvenus.
 
Merci d'avance
 
Sandra

Reply

Marsh Posté le 14-04-2005 à 12:09:17   

Reply

Marsh Posté le 14-04-2005 à 12:13:17    

Je ne crois pas que ce soit possible :/

Reply

Marsh Posté le 14-04-2005 à 18:14:30    

Salut Sandra,
 
Je vois très bien ce que tu veux faire.
A première vue, Access ne t'offre aucune propriété qui te permettrait de faire ce que tu veux.
 
Néanmoins, tu peux utiliser un subterfuge qui fonctionne parfaitement.
 
- Tu crées un bouton par colonne situé juste au dessus de ta zone de liste. Tu n'as donc plus besoin de faire apparaitre les en-têtes.
Le caption de chaque bouton sera le nom de la colonne situé juste en dessous.
- dans l'évènement 'clic' de chaque bouton tu mets nomdeliste.rowsource = "ta_requête_SQL ORDER BY ton_champs ASC "
Tu peux pomper l'instruction SQL de ta requête en allant dans les propriétés de ta zone de liste, dans l'onglet 'Données' et tu fais un copier de la sélection de la zone 'Contenu'
ATTENTION : N'oublie surtout pas les ' avant et après ta requête SQL et supprime le ';' à la fin.
 
Je te laisse réfléchir sur la façon de procéder pour inverser le tri (ASC ou DESC). Exemple lorsque tu cliques sur le bouton une première fois il fait un tri ASC et la deuxième un tri DESC. On peut envisager de stocker le tri actuel dans une variable ou un champ masqué par exemple.
 
Voici un exemple d'évènement click :
 
Private Sub bouton_Click()
    ZoneListe.RowSource = "SELECT [T_Production].[NumDevis], [T_Site].[NomSite] " & _
                                    "FROM T_Production " & _
                                    "INNER JOIN T_Site ON [T_Production].[NomSite]=[T_Site].[NumAutoSite] " & _
                                    "ORDER BY [T_Production].[NumDevis] DESC"
End Sub
 
Voilà, j'espère avoir pu t'apporter mon aide. Bon Dév.
Lionel


Message édité par yoyogott le 14-04-2005 à 18:16:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed