Classement

Résolu
morinn Messages postés 16 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 29 mars 2012 - 2 janv. 2007 à 23:07
morinn Messages postés 16 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 29 mars 2012 - 3 janv. 2007 à 23:25
Bonjour, j'aimerai avoir un moyen de pouvoir faire un classement mais juste sur les trois plus grandes valeurs de ma colonne.

Je m'explique plus simplement :

J'ai une première colonne avec des noms. Dans une seconde colonne j'ai des notes sur 20 , dans une troisième aussi une quatrième itou etc etc...

J'aimerai pouvoir ressortir les trois meilleurs d'une matière. J'aimerai que l'on puisse avoir juste les trois noms des trois meilleurs de chaque matière.

Avec GRANDE.VALEUR j'ai les trois meilleure snotes mais pas les noms.

Merci de votre aide.

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
3 janv. 2007 à 00:15
Re, bon je te mets une fonction ici, pense à lire les commentaires afin de l'adapter à tes besoins (et placements). Si tu galères, mets moi où sont les données, et où est ce qu'on peut les placer.

Et sinon, pour lancer la procédure depuis excel, il faut le pavé de commande Visual Basic, click sur le bouton Play (exécuter une macro) et lance Classement :

Public Sub Classement()

'===============================================================
' en commentaires, des précisions pour modifications de ta
part
'===============================================================
    
    Range("A2:B" & DLU).Select:     Selection.Copy
    'je fais comme si tes données partent d'A2 vers B qque
chose
    ' A étant la colonne des noms, et B
celles des notes
    
    
    Range("D2").Select:             ActiveSheet.Paste
    'Choisi une colonne où il n'y a rien, ni à droite de
celle-ci
    ' et remplace donc D2 par la bonne
valeur
   

    ' ici, il y
a        Range("E2),    si avant t'as choisi (à la place de D2)
    'M2, là ce sera N2
    Selection.Sort Key1:=Range("E2"), Order1:=xlDescending, Header:=xlGuess,
_
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
_
        DataOption1:=xlSortNormal
        
    'toujours pareil, D5 à remplacer par la bonne colonne (sur
l'exemple précédant,
    ' c'est M5, et E à
remplacer par N
    Range("D5:E" & DLU).Value = vbNullString
End Sub

Private Function DLU() As Integer
    DLU = Columns(1).Find("", [A2], , , xlByRows, xlNext).Row - 1
    'ici c'est pour chercher la
dernière ligne utilisée, pour la colonne
    ' des
noms. Si les noms sont en colonnes C, remplace Columns(1)
    'par Columns(3)  et [A2] par [C2]
    'Si les noms sont en colonnes F, remplace
Columns(1)
    'par Columns(6)  et [A2] par
[F2]
    'etc..
End Function

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 janv. 2007 à 23:17
Salut,

une colonne de quoi ?
* excel
* ListBox (VBA)
* List
* MSFlexGrid
* etc...

Et du coup, t'es en dotnet ou vba ?
Qu'est ce que GRANDE.VALEUR ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
morinn Messages postés 16 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 29 mars 2012
2 janv. 2007 à 23:22
Bonsoir,
excusez du manque de précision.
Je suis sous excel donc VBA.

(GRANDE.VALEUR sert à sortir la plus grande valeur d'une colonne mais je ne sais la relier avec le nom de la personne qui a cette plus grande valeur)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 janv. 2007 à 23:50
pas de problème !
Par contre, je n'ai pas trouvé de fonction qui donne le texte d'une cellule à côté d'une autre, mais si Molenn (notre spécialiste des fonctions excel) passe par là, te filera la combine.
Moi je ne peux que te faire ça en VBA, et donc avec du code, mais une fonction personnalisé peut être créée facilement pour ça.
Ah et ta fonction (grande.valeur) fonctionne t-elle si tu as, par exemple, 5 égalité ?
Si tu veux tout ça sous code, tiens moi au courant, et dans ce cas précise moi où sont les noms et les notes (dans quelles colonnes, cellules de départ)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
3 janv. 2007 à 20:18
Salut,

j'ai vu que tu t'étais connecté 8 heures après mon message et je me permettais de venir aux nouvelles, en espérant que mon code t'allais bien.

@ bientôt,

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
morinn Messages postés 16 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 29 mars 2012
3 janv. 2007 à 23:25
J'ai en fait une compilation de ta solution et de celle que j'ai recherché par ailleurs.
Je me retrouve donc avec une formule en VBA (la tienne) et une autre avec des formules classiques.

Je te remercie vivement de ta disponibilité et de ta rapidité.

Amicalement
0
Rejoignez-nous