> 09 - Trier rapidement un formulaire tabulaire

On dispose d'un formulaire tabulaire (ou d'un sous-formulaire) qu'on souhaite pouvoir trier sur n'importe quelle colonne.
NB: ce formulaire doit être construit sur une requête ayant déjà un ordre de tri.

1 - Dans un module placer ceci:

Public Sub tricol(frm As Form, fld As String, asc As String)
Dim strSQL As String
strSQL = frm.RecordSource
strSQL = Left$(strSQL, InStr(strSQL, "ORDER BY") + 8) & fld
If asc = "+" Then
strSQL = strSQL & " ASC;"
Else
strSQL = strSQL & " DESC;"
End If
frm.RecordSource = strSQL
frm.Refresh
End Sub

2 - Dans l'en-tête du formulaire placer des boutons en tant que titre de chaque colonne.

3 - Dans la procédure sous-jacente de l'évènement "sur clic" de chaque bouton placer ceci:

tricol Me, "[leNomDuChampàTrier]", "+"

4 - Amélioration: changer l'ordre de tri à chaque clic:

If Me![btnDate].Caption = "Date -" Then
Me![btnDate].Caption = "Date +"
tricol Me, "[monChampDate]", "+"
Else
Me![btnDate].Caption = "Date -"
tricol Me, "[monChampDate]", "-"
End If