Classement sur deux colonnes
Bonjour à tous,
J'ai des points d'examens qui permettent d'obtenir grâce à des formules un % et une mention (ajourné, satisfaction,...).
J'ai par exemple
Dist 72,70
Aj 53,60
Dist 77,5
J'aurais voulu classer d'abord par mention (ajourné, satisfaction, distinction...) et ensuite pas pourcentage.
Il faut que tous les ajournés se trouvent en bas du classement (il ne peut pas y avoir un ajourné qui soit au-dessus d'une distinction par exemple).
Pour cela, j'utilisais ce 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("AD11"), Order1:=xlAscending 'premier tri, pour mettre les Aj en fin de liste
With Fom 'sur la feuille de travail
Lign = Application.Match("Aj", .Columns(24), 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 SubLa macro "calcul" reprend le code ci-dessus.
J'ai une erreur ici :
incompatibilité de type
Je mets en attaché un fichier, cela sera plus simple.
J'aimerais donc classer la colonne AD (en mettant les aj en dessous) et ensuite par AL (%)
Je vous remercie d'avance pour votre aide.
beegeezzz
Bonsoir
Pour la 1ère question la variable "délibec" est sans accent (une habitude à prendre (évite ce genre d'erreur) toutes les variables sans accent)
Voir le programme joint
Bonjour,
Ta réponse est parfaite, je te remercie mille fois pour ton aide.
Très bonne journée.
beegees
-- 29 Juin 2011, 14:56 --
Banzai64 a écrit :Bonsoir
Pour la 1ère question la variable "délibec" est sans accent (une habitude à prendre (évite ce genre d'erreur) toutes les variables sans accent)
Voir le programme joint
Rebonjour,
Je me permets de réouvrir ce poste car j'ai fait une petite erreur.
En fait, il faut classer par pourcentage (%) AK11 et non pas mention (AC11).
J'ai donc changé la macro comme ceci :
Range("delibec").Resize(, Range("delibec").Columns.Count + 4).Sort _
Key1:=Range("AR11"), Order1:=xlDescending, _
Key2:=Range("AQ11"), Order2:=xlDescending, _la première clé de tri est le % et la seconde la mention.
Comme cela, des ajournés viennent se mettre avant des satisfactions.
Aurais-tu une idée comment je peux résoudre cela stp ?
Je joins le nouveau fichier.
Merci
beegees