Bonsoir à tous,
Je voudrais faire un tableau qui fait 1 classement de rencontres sportives, j'ai trouvé et retouché une macro qui fait à peu près ce que je veux à quelques exceptions pres :
la macro établit un tri des joueurs en fonction du score rentré ex :
Pierre 50 1
Jean 20 2
Paul 10 3
le problème est qu'il faut rentrer le score manuellement à chaque fois.
mon score est calculé à partir d'un tableau victoires - défaites
je voudrais qu'il prenne en compte ce score la mais des que j'indique une formule dans ces cellules, le classement ne fonctionne plus , c'est à dire quand je change un score , le classement ne bouge pas.
je vous envois la macro ci-jointe pour être plus clair
je ne suis pas un pro d'excel et des macros en l'occurence donc si quelqu'un pouvait m'aider ce serait tres sympa de sa part
merci d'avance
------------------------------------------------------------
Sub Triscore()
'
'
'pour une matrice des lignes 3 à 32
'avec en colonne A un index des joueurs,
'en colonne B leur nom et
'en colonne C le rang que l'on va remplir automatiquement
'classer selon le score
Rows("3:7" ).Select
Selection.Sort Key1:=Range("C3" ), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Mettre 1 au rang du premier en donnant comme rang le N° de ligne moins 2
Range("D3" ).Select
ActiveCell.FormulaR1C1 = "=ROW(RC[-2])-2"
' Au suivant mettre son N° de ligne -2 s'il est différent du précédent,
'sinon mettre comme le précédent
Range("D4" ).Select
ActiveCell.FormulaR1C1 = "=+IF(RC[-1]=R[-1]C[-1],R[-1]C,ROW(RC[-1])-2)"
'copier cette formule dans toute lma colonne score de la matrice
Range("D4" ).Select
Selection.AutoFill Destination:=Range("D4:D7" ), Type:=xlFillDefault
'Copier la colonne des scores et la coller en valeur (collage spécial valeur)
Range("D3:D7" ).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'retrier les lignes en fonction de l'index des joueurs mais ce pourrait être par ordre alphabétique par exemple
Rows("3:7" ).Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A3" ), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A3" ).Select
End Sub