|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Expert Confirmé Sénior
![]() ![]() Philippe TulliezFormateur Office et développeur VBA (Excel, Access et Word) Inscription : janvier 2010 Messages : 3 047 ![]() |
Bonjour,
J'avais écrit en son temps une procédure de tri, basée sur 'Une feuille = une Table' et commençait en cellule A1. Cette discussion m'a donné l'idée de développer une procédure plus souple qui permet de répondre à plus de situation. Cette procédure est basée sur l'ancienne méthode SORT, limitée à 3 niveaux de tri parce-que je veux garder une portabilité avec la version 2003. SortTable(Table As Range, Optional lstCol As String, Optional sHeader As Byte = xlGuess, Optional Extend As Boolean = True). Exemple SortTable Range("A1"). Les arguments : Table de type Range. Représente la cellule ou plage de cellules à trier. Si une seule cellule est référencée, la référence est étendue aux cellules contigües (cf Ctrl+*) sauf si l'argument Extend est à FALSE. [lstCol] de type String contient la liste des colonnes à trier (maximum de 3), séparé par un point virgule. Le tri est Ascendant par défaut sauf si un n° de colonne est négatif. Si lstCol est omis, c'est la première colonne de la table qui sera trié. Exemple : lstCol:="1;-6;-4". Dans cet exemple, le tri est descendant pour les colonnes 6 et 3. [sHeader] type Byte. Défini si la table à un en-tête. (xlGuess par défaut). [Extend] de type Boolean. Indique si la référence à la table doit être étendue aux cellules contigües. La valeur par défaut est TRUE. Pour résumé, si un seul argument est donné. Exemple : Dans l'exemple, nous considérons que la feuille est représentée pas la variable objet sht et que la plage contigüe s'étend de A1 à H100 Code :
Le classeur SortDemo.xls contient quelques exemples. Malgré le soin que j'ai apporté au développement de la procédure, au classeur exemple et aux nombreux tests, il est possible qu'il y ait un bug non rencontré. J'ai moi-même perdu une image que j'ai dû reconstituer en passant de la version 2010 à 2003. J'en ignore la raison. J'ai également eu un soucis de tri après plusieurs tests, et ce sans raison apparente. Si vous avez des remarques n'hésitez pas. Le code Testé sur les versions 2003 et 2010 Code :
__________________
Philippe Tulliez http://philippe.tulliez.be Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau) Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter ![]() Dernier article : Excel – Créer un affichage personnalisé sans VBA Mes contributions : Fonction Incrémentation d'un n° (Compteur) - Procédure de tri pour Excel 2003-2010 |
||||
|
30
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() Dominique LEMAIRESalarié Champagne Inscription : décembre 2006 Messages : 2 650 ![]() |
Bonjour Philippe,
Je n'ai pas le temps de tester (je suis sur autre chose), mais de toutes façon, bravo pour ce travail et pour tout ce que tu donnes en disponibilité par ailleurs. Dès que je le peux, je reviendrai tester ta contribution et te dirai ce que j'en pense. Je complète ce message car j'ai fait l'essai, aucun problème sinon que, mais tout le monde le devinera, j'ai ajouté le nom de ma feuille Code :
Cordialement,
__________________
Dom De Anomaly Citation:
|
|||
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Philippe TulliezFormateur Office et développeur VBA (Excel, Access et Word) Inscription : janvier 2010 Messages : 3 047 ![]() |
Bonjour Dominique,
Merci pour ton appréciation cela fait toujours plaisir. Cordialement Philippe
__________________
Philippe Tulliez http://philippe.tulliez.be Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau) Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter ![]() Dernier article : Excel – Créer un affichage personnalisé sans VBA Mes contributions : Fonction Incrémentation d'un n° (Compteur) - Procédure de tri pour Excel 2003-2010 |
|
10
|
|
|
#4 |
|
Invité de passage
![]() Responsable des études Inscription : octobre 2012 Messages : 2 ![]() |
Merci de cette démo très complète.
En fait j'ai réussi par le simple Range.Sort. Comme je n'avais pas utilisé cette commande, je me suis fié à la doc MS qui dit que Key1:= est 'optional'. En réalité, dans mon cas, ça ne l'est pas : ça ne marche pas sans, mais ça marche avec...
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com