IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

[Actualit�] VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�)

Noter ce billet
par , 30/04/2022 � 13h17 (6600 Affichages)
Nom : SortTable.png
Affichages : 19121
Taille : 88,3 Ko

Introduction
J'avais publi� il y a quelques ann�es le code d'une fonction g�n�rique permettant de trier un objet Range voir mon billet � ce sujet Excel VBA Trier � Proc�dure pour version 2003-2010 (Version 5.1) malgr� son titre, elle fonctionne toujours aujourd'hui (version 365). Cependant elle ne fonctionne pas avec l'objet ListObject

Je publie donc aujourd'hui, une fonction triant un ListObject (Tableau structur�). Elle offre moins de possibilit�s mais une nouvelle version avec plus d'arguments comme tri des couleurs est en cours de d�veloppement.

La fonction a deux arguments l'objet ListObject � trier ainsi que la liste des colonnes � trier soit croissant soit d�croissant. Cette liste est une cha�ne de caract�res s�par�es par ";" contenant soit le nom de l'�tiquette de colonne soit le n� de la colonne (voir l'exemple en bas de cet article)

Code de la fonction
Code VBA : 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
31
32
Function SortTable(oList As ListObject, Optional LabelList As String)
  ' Fonction de tri pour ListObject
  ' Tri Ascendant/Descendant de colonne(s) d'un tableau structuré
  ' Author  : Philippe Tulliez (www.magicoffice.be)
  ' Arguments
  '   oList       (ListObject)  Objet table
  '   [LabelList] (String)     (Nom des étiquettes de colonne ou numéro des colonnes à trier séparé par ; (Exemple Voiture;Logement;3)
  '                              Si l'étiquette est précédée par un signe négatif, le tri est descendant
  '                                 Exemple ("Service;-Logement;-Voiture")
  '                                 signifie que la colonne "Service" sera triée par ordre croissant et les deux autres par ordre décroisant
  '                              Si LabelList est vide, le tri se fait sur la première colonne de la table
  ' Déclaration & Affectation
  Dim Sc As Range   ' Colonne à trier
  Dim So As Byte    ' Ordre de tri
  Dim Sl As Variant ' Liste des champs à trier
  Dim El As Integer ' Variable de boucle
  Dim Value As Variant
  ' Liste des champs à trier suivant argument [LabelList] (Si vide l'Array prend l'étiquette de la première colonne)
  Sl = IIf(Len(LabelList), Split(LabelList, ";"), Array(oList.ListColumns(1).Name))
  '
  With oList
  .Sort.SortFields.Clear
   For El = LBound(Sl) To UBound(Sl)
    So = 1 + Abs(Left(Sl(El), 1) = "-")
    Value = Mid(Sl(El), So): If IsNumeric(Value) Then Value = Val(Value)
    Set Sc = .ListColumns(Value).DataBodyRange
   .Sort.SortFields.Add Key:=Sc, SortOn:=xlSortOnValues, Order:=So
   Next
   .Sort.Apply
  End With
  Set Sc = Nothing
End Function
Exemple d'une proc�dure qui l'invoque
La proc�dure ci-dessous trie les colonnes "Sexe" et "Points" du tableau structur� nomm� t_People. La premi�re est tri�e par ordre croissant et la seconde par ordre d�croissant.
Code VBA : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
Sub SortTableExemple()
  SortTable Range("t_People").ListObject, "Sexe;-Points"
End Sub

Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog Viadeo Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog Twitter Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog Google Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog Facebook Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog Digg Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog Delicious Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog MySpace Envoyer le billet � VBA Excel - Fonction g�n�rique - Trier un objet ListObject (Tableau structur�) � dans le blog Yahoo

Mis � jour 04/05/2024 � 12h07 par Philippe Tulliez

Cat�gories
VBA Excel

Commentaires

  1. Avatar de Sibithen
    • |
    • permalink
    Merci beaucoup pour cette fonction !
  2. Avatar de Philippe Tulliez
    • |
    • permalink
    Citation Envoy� par Sibithen
    Merci beaucoup pour cette fonction !
    Merci pour votre message, cela fait toujours plaisir de savoir que cela sert � quelques choses de publier.
  3. Avatar de curt
    • |
    • permalink
    Bonsoir Philippe,

    content de lire un nouveau billet ou plus exactement la mise � jour d'un pr�c�dent.... Tu ne l�ches rien. Bravo et merci
    Curt
  4. Avatar de Philippe Tulliez
    • |
    • permalink
    Citation Envoy� par curt
    Bonsoir Philippe,

    content de lire un nouveau billet ou plus exactement la mise � jour d'un pr�c�dent.... Tu ne l�ches rien. Bravo et merci
    Curt
    Bonjour Curt,
    Merci pour ton message