Tri en ne tenant pas compte de certaines lignes

beegees

XLDnaute Occasionnel
Bonjour tout le monde,

J'utilise une macro que voici :

Code:
Sub calcul()
'
' calcul Macro
' Macro enregistrée le 4/06/2006
'

'
    Application.Goto Reference:="alphabétique"
    Selection.Copy
    Application.Goto Reference:="délibé"
    ActiveSheet.Paste
    Sheets("entree des données").Select
    Range("B11").Select
    Sheets("ordre de mérites").Select
    Application.Goto Reference:="délibec"
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("L12"), Order1:=xlDescending, Key2:=Range( _
        "I12"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase _
        :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
        DataOption2:=xlSortNormal
    ActiveWindow.SmallScroll Down:=-3
    Range("B9").Select
End Sub
Je sélectionne donc une plage de cellules, je la copie et la colle dans un autre
onglet excel.

Je trie ensuite la plage collée par odre décroissant (du plus grand au plus petit)

Mon problème est ici :
Code:
Selection.Sort Key1:=Range("L12"), Order1:=xlDescending, Key2:=Range( _
        "I12"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase _
        :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
        DataOption2:=xlSortNormal
Le programme est censé classer les Grande distinction, Distinction, Satisfaction et en toute fin de liste les ajournés

Le problème, c'est que des ajournés se retrouvent avant des satisfactions.

J'ai bien sûr compris le problème :

Les lignes sont classées par rapport aux rangées L et ensuite I, il y a des ajournés qui ont des totaux plus importants pour le cours 6 que des étudiants satisfaits.

Je me demandais si il y avait moyen de ne pas inclure dans le tri les lignes dont la colonne O (voir onglet "ordre de mérites") est égal à "Aj" ?

J'aimerais par contre que ces lignes qui contiennet "Aj" soient classées en dessous de toutes les autres.

Je joins le fichier afin que cela soit plus claire.

http://164.15.112.38/forum.zip

Merci d'avance pour l'aide.

beegees
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Tri en ne tenant pas compte de certaines lignes

Bonjour,

si j'ai bien compris, essaie ce code :

Code:
Sub calcul()
Dim Lign As Long
Dim Fom As Worksheet
Set Fom = Sheets("ordre de mérites") 'on détermine la feuille de travail
Range("alphabétique").Copy Range("délibé") 'on copie les données
Range("délibec").Sort Key1:=Range("O12"), Order1:=xlAscending 'premier tri, pour mettre les Aj en fin de liste
With Fom 'sur la feuille de travail
    Lign = Application.Match("Aj", .Columns(15), 0) 'on cherche la première ligne "Aj"
    .Range("A12:BD" & Lign - 1).Sort Key1:=.Range("L12"), Order1:=xlDescending, Key2:=.Range( _
        "I12"), Order2:=xlDescending, Header:=xlNo
            'on trie les non-ajournés
    .Range("A" & Lign & ":BD" & .[A65000].End(xlUp).Row).Sort Key1:=.Range("L" & Lign), Order1:=xlDescending, _
        Key2:=.Range("I" & Lign), Order2:=xlDescending, Header:=xlNo
            'on trie les ajournés
End With
End Sub

bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 011
Membres
101 866
dernier inscrit
XFPRO