Tri à plusieurs critères sur excel 2002 SP3

  • Initiateur de la discussion Initiateur de la discussion aredo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

aredo

XLDnaute Occasionnel
bonjour,

J'ai un tableau à trier, mais les critères sont limités avec ma version. Peut-on par le vba faire cette opération ?
Description dans fichier.
merci au fofo
 

Pièces jointes

Re : Tri à plusieurs critères sur excel 2002 SP3

Bonjour aredo,

Joli petit problème, je mets un Like au post #1.

Voyez le fichier joint avec cette macro dans le code de la feuille :

Code:
Private Sub CommandButton1_Click()
Dim P As Range, col%, a, b, i&, deb, h&, PC As Range
Application.ScreenUpdating = False
Set P = Range("B3:E" & [B65536].End(xlUp).Row) 'adapter éventuellement
col = 2 'n° de la colonne à trier (C)
a = Array(36, 20, 40) 'couleurs dans l'ordre
b = Array(xlDescending, xlAscending, xlAscending) 'ordre du tri
P.Columns(1).Insert xlToRight 'colonne auxiliaire
Set P = P.Offset(, -1).Resize(, P.Columns.Count + 1)
For i = 1 To P.Rows.Count
  P(i, 1) = Application.Match(P(i, 2).Interior.ColorIndex, a, 0)
Next
P.Sort P(1), xlAscending, Header:=xlNo 'tri sur les couleurs
For i = 1 To UBound(a) + 1 'sur chaque zone de couleur
  deb = Application.Match(i, P.Columns(1), 0)
  If IsNumeric(deb) Then
    h = Application.CountIf(P.Columns(1), i)
    Set PC = P(deb, 1).Resize(h, P.Columns.Count)
    PC.Sort PC(1, col + 1), b(i - 1), Header:=xlNo 'tri sur la colonne
  End If
Next
P.Columns(1).Delete xlToLeft 'supprime la colonne auxiliaire
End Sub
Avec les tableaux a et b il est facile d'adapter pour davantage de couleurs.

Edit : bonjour chère ânesse, pas rafraîchi 🙂

A+
 

Pièces jointes

Dernière édition:
Re : Tri à plusieurs critères sur excel 2002 SP3

Re,

Sur un grand tableau, la 1ère boucle (qui remplit la colonne auxiliaire) peut prendre du temps.

En la remplaçant par ce code l'exécution doit être plus rapide :

Code:
ThisWorkbook.Names.Add "a", a 'noms définis
ThisWorkbook.Names.Add "coul", RefersToR1C1:="=MATCH(GET.CELL(38,RC[1]),a,0)"
P.Columns(1) = "=coul"
P.Columns(1).Value = P.Columns(1).Value 'supprime les formules
MATCH c'est EQUIV et GET.CELL c'est LIRE.CELLULE, fonction macro Excel 4.0.

Fichier (2).

A+
 

Pièces jointes

Re : Tri à plusieurs critères sur excel 2002 SP3

Bonsoir,

Merci Doublezero pour ton approche, c’est un peu différent de ce que j’attendais mais c’est à retenir..
Quand à Job75, ça fait plaisir de te relire à nouveau. Tu m’a fait un code inespéré, ça devient de l’art. A chaque fois, tu m’ épates un peu plus. Rien à redire, c’est du très bon boulot.

Puisque tu es là, je fais appel à ton bon sens, pour une approche différente de la mienne .
Voilà, dans la feuille « NbreCyclaRemplir », il y a des boutons de commande en colonne K, qui me permettent ,à ma guise de remettre certaines cellules à jour. (Je ne les ai pas tous mis en place)
Ex : Bouton en k3 met à jour D3 et efface E3 et J3. Idem pour toutes les lignes.

Ps : Je peux faire cette opération pour le tableau complet, soit les deux boutons mise à jour et Raz emp..

Ma demande : Ne vois-tu pas une méthode plus simple et plus élégante qu’une lignée de boutons ?

Merci encore.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
311
Réponses
10
Affichages
619
Retour