Tri par VBA ou autre

Bonjour,

J’ai une feuille nommée ‘’ Feuille de match’’ avec des équipes tirées au hasard. Je voudrais trier ces équipes afin que toutes les triplettes jouant contre des triplettes (en brun sur mes feuilles) se retrouvent tout au fond de la liste, que la seule ligne possible où il y a une doublette contre une triplette (ligne en vert) se retrouve au milieu et que toutes les doublettes jouant contre des doublettes (en bleu) se retrouvent en haut. A l’intérieur de ces 3 groupes, le tri n’est pas important.

Le résultat attendu est sur la feuille du même nom

J’ai tenté des tris avec les outils Excel à disposition (Feuilles ‘’ Tri H-D ascendant’’ et ‘’ Tri H-D descendant’’), mais les cellules vides faussent les résultats souhaités.

Avez-vous une solution, si possible en VBA, autrement avec les outils Excel ?

Sans possibilité de pouvoir trier simplement ces données, je pense pouvoir trouver moi-même une autre solution en VBA, mais toute idée serait quand même la bienvenue.

Cordialement.

9demo-26-04.xlsm (56.41 Ko)

Bonsoir Yvouilles

une solution

mettre les filtres sur ces colonnes

capture

puis faire 3 tris par couleur successifs dans la 1e colonne par exemple

capture2

et dans l'ordre

1° jaune

2e Vert

3e Bleu

Fred

Aïe !

Merci pour ta réponse, mais mes couleurs, c'était juste pour mieux expliquer mon problème. Dans la réalité, toutes les cellules sont sans couleur de fond

As-tu une autre idée (à part mettre des couleurs de fond) ?

Chaleureusement.

Ahhh ok !!!!

Je vais réfléchir pour voir si je trouve une autre solution

Fred

Bonjour Yvouille

erreur de ma part

Bonjour Yvouille

je recommence

selectionner les données B4:H11

tri personnalisé Z à A colonne D + Z à A colonne H

puis selectionner les lignes 4 à 11

tri personnalisé colonne A du plus petit au plus grand

Ca doit fonctionner

Macro avec l'enregistreur

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("B4:H11").Select
    ActiveWorkbook.Worksheets("Feuille de match").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuille de match").Sort.SortFields.Add Key:=Range( _
        "D4:D11"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Feuille de match").Sort.SortFields.Add Key:=Range( _
        "H4:H11"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Feuille de match").Sort
        .SetRange Range("B4:H11")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Rows("4:11").Select
    ActiveWorkbook.Worksheets("Feuille de match").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuille de match").Sort.SortFields.Add Key:=Range( _
        "A4:A11"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Feuille de match").Sort
        .SetRange Range("A4:TCY11")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Re bonsoir Yvouille

Bonsoir le forum

j'ai trouvé une solution mais cela doit s'appuyer sur une petite modification de ta part... Est-il possible que tu mettes un - au lieu d'une cellule vide dans les colonnes D et H ??

si c'est possible un tri de A à Z dans la colonne H puis un tri de A à Z dans la colonne D.... réponds a ton problème... sans cet artifice j'ai pas trouvé de solution... (SANS VBA)

capture

Fred

Bonsoir à tous,

Salut fred2406,

Un truc simple, en colonne Q pour chaque ligne tu ressors le nombre de cellules pleines via une formule.

Puis tu tries par ordre croissant en te basant sur la colonne Q.

Je l'ai fait manuellement.

klin89

Bonsoir à vous trois et merci à chacun pour sa réponse pleine de bonnes idées

Chacune de ces propositions demandent soit des préparatifs au préalable – comme de mettre en place de signes ‘’-‘’ dans les cellules vides pour fred2406 – ou par la suite – comme effacer la colonne Q pour Klin89 ou remettre la numérotation de la plage A4:A11 dans l’ordre pour BOB71AU.

Je vais donc finalement opter pour la proposition de Klin89 car ça me permettra d’effectuer une opération successive dont je ne vous avais pas parlé et qui consiste à effectuer encore un tirage au sort des terrains à l’intérieur des groupes ‘’Doublettes contre doublettes’’ et ‘’Triplettes contre triplettes’’ : je fais ainsi d’une pierre deux coups.

Encore un tout grand merci pour votre aide.

Amicalement.

Rechercher des sujets similaires à "tri vba"