Formules pour classement

  • Initiateur de la discussion Initiateur de la discussion maval
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

maval

XLDnaute Barbatruc
Bonjour

Je rencontre un problème qui me paraissait simple à résoudre mais je ne parviens pas à trouver la solution et l'explication sur ce forum.
Sur mon classeur j'ai des feuilles dans laquelle apparait une feuille "1erTours", dans les colonnes, des N° d’équipes, des noms et des points.
J'aimerai récupéré ces valeurs sur la feuille "Classement"
ci joint mon fichier explicatif

Merci d'avance à ceux qui prendront la peine de m'aider

Cordialement
Maval
 

Pièces jointes

Re : Formules pour classement

Re,

Bon maintenant c'est clair, alors il suffit d'insérer une colonne auxiliaire pour faire le classement :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim n As Integer, w As Worksheet
n = Val(Sh.Name) - 1
If n < 1 Then Exit Sub
Application.ScreenUpdating = False
If Application.Count(Sh.[G3:G200].Offset(, n)) = 0 Then
  For Each w In Worksheets
    If Val(w.Name) = n Then w.Cells.Copy Sh.[A1]: Exit For
  Next
  Sh.[A1].Copy Sh.[A1] 'vide le presse-papier
End If
'---classement---
Sh.[K:K].Insert 'insère une colonne auxiliaire
Sh.[K3:K200].FormulaR1C1 = "=SUM(RC7:RC10)"
Sh.[B3:K200].Sort Sh.[K3], xlDescending, Header:=xlNo
Sh.[K:K].Delete 'supprime colonne auxiliaire
End Sub
A+
 
Re : Formules pour classement

Re,

En général toutes les parties ne sont pas encore jouées.

Il paraît donc plus judicieux d'utiliser la fonction MOYENNE (AVERAGE) pour faire le classement :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim n As Integer, w As Worksheet
n = Val(Sh.Name) - 1
If n < 1 Then Exit Sub
Application.ScreenUpdating = False
If Application.Count(Sh.[G3:G200].Offset(, n)) = 0 Then
  For Each w In Worksheets
    If Val(w.Name) = n Then w.Cells.Copy Sh.[A1]: Exit For
  Next
  Sh.[A1].Copy Sh.[A1] 'vide le presse-papier
End If
'---classement---
Sh.[K:K].Insert 'insère une colonne auxiliaire
Sh.[K3:K200].FormulaR1C1 = "=IF(COUNT(RC7:RC10),AVERAGE(RC7:RC10),0)"
Sh.[B3:K200].Sort Sh.[K3], xlDescending, Header:=xlNo
Sh.[K:K].Delete 'supprime la colonne auxiliaire
End Sub
A+
 
Re : Formules pour classement

Bonjour Job

Moi je veut tous se que l'on veut, mais la je n'y arrive pas.
J'ai bien vue que la macro dit la plage RC7:RC10 mais j'aimerai que tu prenne cinq minutes avec le fichier du post#18 et regarder ou j'ai fait l'erreur car la je perd le nord?

Merci et bonne journée

Max
 
Re : Formules pour classement

Bonjour maval, le forum,

1) Il est mieux de trier les feuilles quand on les quitte.

Donc avec cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'---classement---
If Val(Sh.Name) = 0 Then Exit Sub
'la colonne F est utilsée pour le calcul
Sh.[F3:F200].FormulaR1C1 = "=SUM(RC7:RC10)"
Sh.[B3:J200].Sort Sh.[F3], xlDescending, Header:=xlNo
Sh.[F3:F200].ClearContents
End Sub
2) Pour le calcul de la feuille Classement j'ai aussi placé le code dans ThisWorkbook.

Bien comprendre que le calcul se fait toujours à partir de la 4ème feuille.

Nota important : ne pas mettre de boutons dans les feuilles sinon ils sont copiés à chaque fois qu'on active une des 4 feuilles sans nouveaux points.

Fichier joint.

A+
 

Pièces jointes

Re : Formules pour classement

Bonjour Job

Sa fonctionne Nickel...
Rien avoir avec les autres code.

Mais pourquoi alors il copie les bouton à chaque fois qu'on active une des 4 feuilles?

Y a t-il pas une solution?

Merci beaucoup et bonne journée

@+
Max
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
1 K
Retour