Les mémos

Fermer Tables

Fermer Requêtes

Fermer Formulaires

Fermer Etats

Fermer Modules

Fermer Base

Fermer Automation

Fermer Administration

Fermer Registre

Fermer String

Fermer Email CDO

Fermer Outlook

Fermer Net

Fermer Dates - Heures

Fermer Fichiers

Fermer Références

Fermer Vrac

Je débute...

Fermer La normalisation

Fermer VBA

Attention
Aucun support
par émail !

Utilisez le forum pour les questions/réponses concernant MsAccess et les codes que vous trouverez sur ce site.
Visites

   visiteurs

   visiteurs en ligne

Formulaires - Tri personnalisé

Tri personnalisé sur formulaire en affichage continu

L'exemple ci-dessous suppose 3 zones de listes modifiables : lstA, lstB et lstC

ainsi que trois cases à cocher pour le choix descendant de chaque liste: chkA, chkB et chkC

le tout placé dans l'entête d'un formulaire avec affichage en mode continu.
On y placera également un bouton pour annuler les tris: cmdOderOff.


Dans l'événement "Sur chargement" du formulaire, on écrira:

Code :
Private Sub Form_Load()
Dim vField As Variant
Dim f As Field
'/ Lire le nom des champs
With Me.RecordsetClone
For Each f In .Fields
vField = vField & f.NAME & ";"
Next
End With
'/ Initialiser les case à chocher
Me.chkA = False
Me.chkB = False
Me.chkC = False
'/ Alimenter les listes
lstA.RowSourceType = "Liste valeurs"
lstA.RowSource = Left(vField, Len(vField) - 1)
lstB.RowSourceType = "Liste valeurs"
lstB.RowSource = Left(vField, Len(vField) - 1)
lstC.RowSourceType = "Liste valeurs"
lstC.RowSource = Left(vField, Len(vField) - 1)
End Sub

Pour le bouton annulation du tri :

Code :
Private Sub cmdOrderOff_Click()
With Me
'/ Supprimer le filtre
.OrderBy = ""
.OrderByOn = False
'/ Supprimer les sélections
.lstA = ""
.lstB = ""
.lstC = ""
End With
End Sub

Sur "Après mise à jour" des listes, on appelera la fonction. Ici l'exemple pour la liste lstA:

Code :
Private Sub lstA_AfterUpdate()
OrderMyForm
End Sub

Même chose sur "Après mise à jour" des cases à cocher. Ici l'exemple pour la case à cocher "chkA":

Code :
Private Sub chkA_AfterUpdate()
OrderMyForm
End Sub

Il reste à ajouter la fonction qui réalisera les tris:

Code :
Function OrderMyForm()
Dim sOrder As String
'/ Construire la liste
If Not IsNull(Me.lstA) Then
If chkA Then
sOrder = Me.lstA & " DESC,"
Else
sOrder = Me.lstA & ","
End If
End If
If Not IsNull(Me.lstB) Then
If chkB Then
sOrder = sOrder & Me.lstB & " DESC,"
Else
sOrder = sOrder & Me.lstB & ","
End If
End If
If Not IsNull(Me.lstC) Then
If chkC Then
sOrder = sOrder & Me.lstC & " DESC,"
Else
sOrder = sOrder & Me.lstC & ","
End If
End If
'/ Activer le tri
If Len(sOrder) > 0 Then
Me.OrderBy = Left(sOrder, Len(sOrder) - 1)
Me.OrderByOn = True
End If
End Function

Date de création : 11/02/2010 : 05:43
Dernière modification : 11/02/2010 : 06:00
Catégorie : Formulaires
Page lue 4915 fois


Imprimer l'article Imprimer l'article

Recherche



Lettre d'information
Pour avoir des nouvelles de ce site, inscrivez-vous à notre Newsletter.
Captcha
Recopier le code :
Au sujet de l'auteur
L'auteur qui fréquente (fréquentait) le forum microsoft.public.fr.access a eu le plaisir d'être nommé MVP Office-Access de janvier 2003 à décembre 2011.

Qui sont les MVP ?

Divers ;-)
Nous contacter

Haut