Classement sans ex aequo

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 !

Fortunato

XLDnaute Nouveau
Bonjour,

Besoin de votre aide pour établir un classement selon 2 critères :
Le nombre de ventes par rapport au client contactés:
Principe => Le 1er doit être celui qui a fait le plus de ventes avec le maximum de contact.
Mon problème est que je n'y arrive pas avec la fonction rang

ci dessous un exemple

Noms Nbre Ventes Client Contactés RESULTAT ATTENDU
A 1 3 1er = F
B 1 2 2eme = C
C 6 7 3eme =G
D 1 4 4eme = H
E 2 2 5eme =E
F 6 6 6eme =I
G 3 5 7eme = B
H 3 8 8eme = A
I 2 3 9eme = D

En vous remerciant d'avance.
 

Pièces jointes

Bonjour

Plusieurs possibilités en pièce jointe, avec une formule matricielle dans la colonne D, donc à valider avec Ctrl+maj+entrer.

Les colonnes fonctionnent par couple, une intermédiaire, et une autre donnant le résultat final. Chaque couple est repérable grâce à sa couleur.

Le /100 pondère les résultats de la colonne C par rapport à ceux de la colonne B. Dans la pratique, il faut choisir un coefficient assez grand pour ne pas donner trop de poids à la colonne C. Donc, si le nombre d'appels habituels tournent vers 100, il faut mettre / 1000 par exemple.

J'ai mis dans certaines colonnes un LIGNE()/1000 juste pour différencier les possibles ex-æquo. A toi de tester avec et sans. Si tu changes le /100 précédent, il faudra aussi changer ce /1000 pour qu'il ne fausse pas les calculs.

@ plus
 

Pièces jointes

Bonsoir à tous,

Curieux Fortunato, vous parlez d'un maximum de contacts et vous prenez le minimum 🙄

En VBA c'est simple, il suffit de trier :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
With [A1].CurrentRegion
  If FilterMode Then ShowAllData 'si la feuille est filtrée
  If .SpecialCells(xlCellTypeVisible).Count < .Count Then _
    .AutoFilter: .AutoFilter 'si tableau Excel filtré
    Range("E2:F" & Rows.Count) = "" 'RAZ
  If .Rows.Count = 1 Then GoTo 1 'si le tableau est vide
  .Sort .Columns(2), xlDescending, .Columns(3), , xlAscending, Header:=xlYes '1er tri
  [E2] = 1: [E2].Resize(.Rows.Count - 1).DataSeries
  [F2].Resize(.Rows.Count) = .Columns(1).Offset(1).Value
  .Sort .Columns(1), xlAscending, Header:=xlYes '2ème tri
End With
[E:E].NumberFormat = "0""EME"""
[E2].NumberFormat = "0""ER"""
1 Application.EnableEvents = True
End Sub
Edit : ajouté le code en cas de filtrage.

Fichier .xlsm joint.

A+
 

Pièces jointes

Dernière édition:
Bonsour®
Besoin de votre aide pour établir un classement selon 2 critères :
Le nombre de ventes par rapport au client contactés:
Principe => Le 1er doit être celui qui a fait le plus de ventes avec le maximum de contact.
Autres propositions sans matricielle, ni vba
upload_2017-10-6_22-3-57.png
 

Pièces jointes

Bonsoir

Effectivement,la logique serait de différencier les ex-æquo avec le rapport - ou + vente/nbre de clients appelés, ou avec - ou +(vente/nbre de clients appelés* 100), mais comme ce n'est pas écrit dans la demande... au lieu de -nbre de clients appelés/100.

Tout à fait faisable avec des formules, matricielles ou pas (avec une colonne intermédiaire dans ce dernier cas, et/ou un tri).

A toi de choisir entre toutes ces possibilités.

@ plus
 

Pièces jointes

Dernière édition:
Re,

Le 2ème tableau est tout à fait inutile :
Code:
Private Sub CommandButton1_Click()
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A1].CurrentRegion
  If CommandButton1.Caption = "RAZ" Then
    CommandButton1.Caption = "Classer"
    .Columns(5).EntireColumn = ""
    .Sort .Cells(1), xlAscending, Header:=xlYes 'tri alphabétique
  Else
    CommandButton1.Caption = "RAZ"
    If .Rows.Count = 1 Then Exit Sub 'si le tableau est vide
    .Sort .Columns(2), xlDescending, .Columns(3), , xlAscending, Header:=xlYes 'tri numérique
    .Cells(2, 5) = 1: .Cells(2, 5).Resize(.Rows.Count - 1).DataSeries
    .Columns(5).EntireColumn.NumberFormat = "0""EME"""
    .Cells(2, 5).NumberFormat = "0""ER"""
  End If
End With
End Sub
Edit : j'ai mis le tableau sous forme de tableau Excel.

Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Bonjour le fil, le forum,

Comme l'a fait remarquer Modeste geedee on peut se passer de formule matricielle et de VBA.

Voyez le tableau Excel du fichier joint avec ces formules en colonnes D E F :
Code:
=[@[Nbre ventes]]-[@[Clients contactés]]/1000-LIGNE()/10000
=RECHERCHEV(GRANDE.VALEUR([Aux1];LIGNE()-1);[Aux1];1;0)
=EQUIV([@Aux1];[Aux2];0)
Edit : RECHERCHEV en colonne E est plus simple que INDEX/EQUIV.

Bon dimanche.
 

Pièces jointes

Dernière édition:
Bonjour Job75

C'est une excellente idée d'utiliser GRANDE.VALEUR() dans le cas présent.🙂

L'objectif de départ était d'obtenir une liste directe de 1 à 8 avec le nombre affiché et je me demande dans ce cas si l'utilisation d'une colonne supplémentaire (E) ne pourrait pas être ignorée par un DECALER (cf.exemple).
Et toujours redoutable d'utiliser le critère de ligne() en colonne D pour ne pas avoir de doublons au cas où les données des colonnes B et C sont identiques !

Bonne journée à toi (et à tous).
zebanx
 

Pièces jointes

Bonjour zebanx,

La formule de base avec GRANDE.VALEUR c'est CISCO qui l'a créée le premier au post #3.

Et la solution que vous proposez au post #11 n'a rien à voir avec celle de mon post #10.

Ma solution permet de toujours déterminer le rang, quel que soit le tri effectué sur le tableau.

Edit : il serait temps de vous doter d'une version Excel plus récente.

A+
 
Dernière édition:
@job75
Merci pour les formules et... la proposition de changement.
(Ca me gêne assez rarement cependant (surtout pour les "xxx.ENS(xxx)") mais 14 ans avec office 2003, c'est effectivement long -).
A+

@CISCO
Rendons à César ce qui lui appartient, merci pour GRANDE.VALEUR qui était idéal dans ce cas.
 
- 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
3
Affichages
195
Réponses
5
Affichages
399
Réponses
22
Affichages
1 K
Réponses
5
Affichages
562
Réponses
3
Affichages
330
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Retour