Tri à plusieurs critères sur excel 2002 SP3

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

  • tri.xls
    35.5 KB · Affichages: 59
  • tri.xls
    35.5 KB · Affichages: 60
  • tri.xls
    35.5 KB · Affichages: 59

job75

XLDnaute Barbatruc
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

  • tri(1).xls
    46.5 KB · Affichages: 38
  • tri(1).xls
    46.5 KB · Affichages: 37
  • tri(1).xls
    46.5 KB · Affichages: 37
Dernière édition:

job75

XLDnaute Barbatruc
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

  • tri(2).xls
    48 KB · Affichages: 50
  • tri(2).xls
    48 KB · Affichages: 53
  • tri(2).xls
    48 KB · Affichages: 49

aredo

XLDnaute Occasionnel
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

  • CompteurJb.xls
    184 KB · Affichages: 38
  • CompteurJb.xls
    184 KB · Affichages: 41
  • CompteurJb.xls
    184 KB · Affichages: 38

Discussions similaires

Réponses
8
Affichages
172

Statistiques des forums

Discussions
312 243
Messages
2 086 551
Membres
103 246
dernier inscrit
blablasss