Les 3 meilleurs résultats du même participant Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
H
Harzer
Membre habitué
Membre habitué
Messages : 121
Appréciation reçue : 1
Inscrit le : 20 février 2012
Version d'Excel : 2010

Message par Harzer » 13 novembre 2016, 21:09

Bonjour à tous,
Après plusieurs essais non concluants, je m’adresse à vous afin de solliciter votre aide.
J’ai un tableau qui contient deux colonnes, la colonne A comporte les noms des participants, la colonne B comporte les points obtenus.
Dans la colonne A (des participants), on peut trouver plusieurs fois le même participant, parfois, le nom du participant peut figurer que deux fois voir même qu’une seule fois.
Le but de la manœuvre est de chercher les 3 meilleurs pointages du même participant :
Pour cela :
1 - Trier en premier lieu les deux colonnes sur le total (colonne B), ainsi, nous avons les pointage dans un ordre décroissant.
2 – Lorsque le tri est fait, si le participant figure plus que trois fois, on garde les 3 meilleurs pointages et on supprime toutes les lignes portant le même nom du participant.
Si le nom du participant ne figure que deux fois ou qu’une seule fois, on ne change rien.
3 – En 3e étape, on crée une nouvelle feuille qu’on nomme ‘Class3Meilleurs’ pour transposer les résultats du tableau de la position Verticale à l'horizontale voir la pièce jointe.
4 – et enfin faire la somme des trois points obtenu pour trier ce nouveau tableau sur les totaux de la colonne E.
Je reste à votre disposition si je n’étais assez clair dans mes explications, sinon, la pièce jointe est plus parlante.
D'avance grand MERCI.
ClassementDes3Meilleurs.xls
(91 Kio) Téléchargé 19 fois
H
Harzer
Membre habitué
Membre habitué
Messages : 121
Appréciation reçue : 1
Inscrit le : 20 février 2012
Version d'Excel : 2010

Message par Harzer » 17 novembre 2016, 20:59

Bonjour à tous,
En attendant un soutien de votre part, j’ai continué à chercher une solution malgré mes piètres connaissances.
J’ai réussi à trouver une solution à mon problème (en cherchant un peu), la solution mise en œuvre fonctionne mais je souhaite votre soutien pour l’améliorer.
Au fait je souhaite transposer seulement les 3 plus grandes valeurs pour chaque participant.
Exemple pour MEULLEMANS Alain :
MEULLEMANS Alain 99
MEULLEMANS Alain 92
MEULLEMANS Alain 91
MEULLEMANS Alain 86
MEULLEMANS Alain 86
MEULLEMANS Alain 86
MEULLEMANS Alain 86
MEULLEMANS Alain 85
MEULLEMANS Alain 84
MEULLEMANS Alain 83
MEULLEMANS Alain 83
MEULLEMANS Alain 82
MEULLEMANS Alain 82
MEULLEMANS Alain 80
MEULLEMANS Alain 80
MEULLEMANS Alain 79
On transpose seulement les 3 plus grandes valeurs C.-à-d. : 99 – 92 et 91.
On fera de même pour les autres participants.
D’avance merci pour vos contributions.
Les 3 meilleurs résultats du même participant V1.xls
(77 Kio) Téléchargé 14 fois
Avatar du membre
bouben
Membre impliqué
Membre impliqué
Messages : 1'695
Appréciations reçues : 34
Inscrit le : 25 août 2014
Version d'Excel : 2010

Message par bouben » 17 novembre 2016, 22:09

Bonsoir,

Ci-joint une proposition à tester.

Lancement avec le bouton violet (comprend toutes les actions à la suite).

Bonne soirée

Bouben

EDIT : le tableau plus bas est une sauvegarde de l'ancienne version => à supprimer
Les 3 meilleurs résultats du même participant V1.1.xls
(103 Kio) Téléchargé 33 fois
H
Harzer
Membre habitué
Membre habitué
Messages : 121
Appréciation reçue : 1
Inscrit le : 20 février 2012
Version d'Excel : 2010

Message par Harzer » 17 novembre 2016, 22:53

Bonsoir Bouben,
Merci pour votre contribution.
Je viens de faire le test, votre code fonctionne très bien et réponds totalement à mes attentes.
Merci infiniment.
Amicalement.
s
smallwater
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 7 février 2015
Version d'Excel : 2013 FR

Message par smallwater » 17 novembre 2016, 23:01

Bonjour,

J'étais en train de travailler sur votre problème et n'ai pas vu qu'il était résolu.

Je vous poste tout de même ma solution dans le fichier ci joint.

Merci,
Cdlt,
Matthieu
Classement.xlsm
Fichier de classement
(26.81 Kio) Téléchargé 25 fois
H
Harzer
Membre habitué
Membre habitué
Messages : 121
Appréciation reçue : 1
Inscrit le : 20 février 2012
Version d'Excel : 2010

Message par Harzer » 18 novembre 2016, 01:15

Bonjour Smallwater,
Merci pour votre proposition.
Comme je suis de nature curieux et aussi par respect pour votre travail, j’ai testé votre code et voici ce qui en découle :
Pour faire mon teste, j’ai changé seulement la valeur au 1er participant (ATARTI Dominique), à savoir : j’ai remplacé les ‘290’ points obtenus par ‘500’ et puis j’ai cliqué sur le bouton ‘Process’.
J’ai remarqué que les résultats sont inchangés.
Merci de m’éclairer.
Bonne soirée et cordiale poignée de mains.
s
smallwater
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 7 février 2015
Version d'Excel : 2013 FR

Message par smallwater » 18 novembre 2016, 01:34

Re Bonjour,

Effectivement, merci de votre remarque.

Dans la précipitation j'ai oublié de "nettoyer" la plage de résultats après chaque essais par la ligne de code ci dessous :
resu.Range("A2:E1000").ClearContents

J'ai aussi ajouté une fonction de tri des résultats finaux.

Ci joint le fichier mis à jour.

Dans l'attente de vous lire,

Merci,
Cdlt,
Matthieu
Classement.xlsm
Fichier maj
(30.37 Kio) Téléchargé 23 fois
H
Harzer
Membre habitué
Membre habitué
Messages : 121
Appréciation reçue : 1
Inscrit le : 20 février 2012
Version d'Excel : 2010

Message par Harzer » 18 novembre 2016, 09:59

Bonjour Matthieu,
Merci encore de votre réponse.
J’ai fait quelques tests sans rien changer aux données, malheureusement j’ai toujours la même ereur (Erreur d'exécution '438') au niveau de la ligne du code suivante :
resu.Cells(y, 2) = Application.WorksheetFunction.MaxIfs(noms.Columns(2), noms.Columns(1), resu.Cells(y, 1))
Merci de m’éclairer.
A vous lire.
Cordialement.
s
smallwater
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 7 février 2015
Version d'Excel : 2013 FR

Message par smallwater » 18 novembre 2016, 12:00

Bonjour Harzer,

Merci pour votre retour,

C'est étrange, j'ai retester le code sur ma machine et tout se passe bien.

Le probleme semble venir de la fonction 'MaxIfs'. Il est possible qu'elle n'existe pas dans les versions d'Excel < 2010. Quelle version utilisez vous ?

De plus, pouvez vous m'envoyer une copie d'écran du message d'erreur ?

Merci,
Cdlt,
Matthieu
H
Harzer
Membre habitué
Membre habitué
Messages : 121
Appréciation reçue : 1
Inscrit le : 20 février 2012
Version d'Excel : 2010

Message par Harzer » 18 novembre 2016, 13:57

Bonjour,
Comme vous le préciser, le problème vient probablement au niveau de la fonction Maxifs.
Je suppose que je n'ai pas cette fonction parce que je n'ai aucune information sur cette dernière.
Ma version d'Excel est : Version Pro plus 2010 (64 bits).
Ne pourrait-on pas trouver une autre fonction qui fait la même chose.
Je joints une copie du message affichant l’erreur.
A vous lire.
Cordialement.
2e Capture
2e Capture
1ere Capture
1ere Capture
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message