Trier les enregistrements en distinguant les majuscules des minuscules

S’applique à
Access pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access trie les enregistrements par ordre croissant ou décroissant, sans tenir compte de la casse. Toutefois, vous pouvez écrire quelques lignes de code Visual Basic pour Applications (VBA) pour trier le texte en fonction de ses valeurs de caractères ASCII. Le tri par valeurs ASCII distingue les lettres majuscules des lettres minuscules et vous donne un ordre respectant la casse.

Ce tableau montre la différence entre un ordre de tri croissant et un ordre de tri qui respecte la casse :

Ordre de tri préalable Ordre croissant Ordre qui respecte la casse
c a A
D A B
a B C
j b D
B c a
C C b
A D c
b j j

Bien que les résultats de la colonne Ordre croissant puissent sembler imprévisibles au premier abord, ils ne le sont pas. Dans cette colonne, « a » apparaît avant « A » et « B » avant « b ». Cela se produit parce que, lorsque Access les évalue en tant que valeurs de texte, « A » = « a » et « B » = « b », qu’ils soient en minuscules ou en majuscules. Access utilise ensuite l’ordre d’origine des valeurs. Dans la colonne Ordre de tri préalable, « a » précède « A » et « B » avant « b ».

Lorsque le tri respectant la casse s’exécute, les valeurs de texte sont remplacées par leurs valeurs ASCII. Par exemple, A = 65, a = 97, B = 66 et b = 98.

Écrire le code VBA

  1. Créez un module VBA. Dans la section Déclarations , tapez la ligne suivante si ce n’est pas déjà fait :

    Option Explicit
    
  2. Tapez cette procédure dans un module de Visual Basic Editor :

    Function StrToHex(S As Variant) As Variant
        ' Converts a string to a series of hexadecimal digits.
        ' For example, StrToHex(Chr(9) & "A~") returns 09417E.
        Dim Temp As String, I As Integer
        If VarType(S) <> 8 Then
            StrToHex = S
        Else
            Temp = ""
            For I = 1 To Len(S)
                Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
            Next I
            StrToHex = Temp
        End If
    End Function
    

    La fonction définie par StrToHex l’utilisateur peut être appelée à partir d’une requête. Lorsque vous passez le nom du champ de tri à cette fonction, celle-ci trie les valeurs du champ dans un ordre sensible à la casse.

  3. Créez une requête qui appelle cette fonction. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête.

  4. Sélectionnez Ajouter des tables (Afficher la table dans Access).

  5. Faites glisser les champs souhaités sur la grille.

  6. Dans la première colonne vide, dans la ligne Champ , tapez Expr1: StrToHex([SortField]). StrToHex est la fonction définie par l’utilisateur que vous avez créée précédemment. Remplacez par SortField le nom du champ qui contient les valeurs respectant la casse.

  7. Dans la cellule de Tri, cliquez sur Croissant ou Décroissant. Si vous choisissez l’ordre croissant, les valeurs qui commencent par des lettres majuscules apparaissent avant les valeurs qui commencent par des lettres minuscules. L’ordre décroissant fait le contraire.

  8. Basculez en mode Feuille de données. Access affiche les enregistrements triés dans un ordre respectant la casse.