Calcul handicap en fonction du résultat de chaque joueur

Bonjour,

Je cherche à automatiser l’handicap de joueurs qui se rencontrent aux ping-pong:

A chaque victoire, le joueur commence le match suivant avec un point de moins au départ, si match nul, pas de changement, si défaite le joueur commence avec un point de plus.

J'ai commencé à incrémenter manuellement mon fichier pour voir l'évolution des handicaps en fonction des résultats des matchs et des joueurs:

La colonne C affiche l'handicap du joueur de la colonne B au moment de commencer le match (idem colonne E=handicap joueur colonne D).

Donc je cherche à ce que l'handicap de C cherche le précédent résultat du joueur en B, et en fonction de ce résultat mette à jour son ancien handicap.

exemple: je cherche l'handicap de Lina pour son 3e match: je dois donc retrouver l'handicap qu'elle avait pour son 2e match (-1 en E12) et le résultat de son 2e match (Nul en F12), ce qui me donne un nouvel handicap de -1 + 0 = -1

  • Comment retrouver la cellule spécifique au joueur en cherchant dans les lignes ou matchs précédents ?
  • Une fois qu'on a retrouvé le bon prénom dans le match précédent, que faut-il indiquer pour utiliser le N° de la ligne trouvée dans la colonne d'handicap adjacente, et ensuite lui ajouter le résultat du match correspondant pour le joueur en question ?

Je me dis que je pourrais peut-être passer par une fonction ou une base de donnée ou une variable mémoire qui aurait tous les prénoms, et une autre fonction qui dirait quoi faire en fonction du résultat ?

J'espère que j'explique à peu près clairement ma (mes) demande(s) car je ne vois pas trop comment faire...

Merci d'avance !

Mathal.

Bonjour,

pour Joueur 1, en C2 :

=NB.SI.ENS($B$1:$B1;$B2;$F$1:$F1;"J2")+NB.SI.ENS($D$1:$D1;$B2;$F$1:$F1;"J1")-NB.SI.ENS($B$1:$B1;$B2;$F$1:$F1;"J1")-NB.SI.ENS($D$1:$D1;$B2;$F$1:$F1;"J2")

adapter pour J2

eric

Bonjour Mathal, Eric, le forum,

Pour le plaisir avec une fonction personnalisée à partir d'excel 2013.

Bonjour le forum,

Bonjour l'équipe,

une autre façon de faire...

If Not Intersect(Target, Range("F2:F" & iRow)) Is Nothing Then
    iLig = 2 + (IIf(Target.Row Mod 8 < 2, (Int(Target.Row / 8) - 1) * 8, Int(Target.Row / 8) * 8))
    For y = 1 To 2
        sNom = Target.Offset(0, -(4 / y))
        Set rCel = Range("B" & iLig & ":D" & iLig + 7).Find(what:=sNom, lookat:=xlWhole)
        iJeu = IIf(Target.Value = "N", 0, -1)
        If iJeu = -1 Then iJeu = IIf(Val(Right(Target.Value, 1)) = y, -1, 1)
        iHandiPing = rCel.Offset(0, 1) + iJeu
        Target.Offset(0, (y * 2)) = iHandiPing
        If Target.Row < 18 Then
            Set rCel = Range("B" & iLig + 8 & ":D" & iLig + 15).Find(what:=sNom, lookat:=xlWhole)
            rCel.Offset(0, 1) = iHandiPing
        End If
    Next
End If

Pour le plaisir du code!

A+

11handiping.xlsm (25.06 Ko)
eriiic a écrit :

Bonjour,

pour Joueur 1, en C2 :

=NB.SI.ENS($B$1:$B1;$B2;$F$1:$F1;"J2")+NB.SI.ENS($D$1:$D1;$B2;$F$1:$F1;"J1")-NB.SI.ENS($B$1:$B1;$B2;$F$1:$F1;"J1")-NB.SI.ENS($D$1:$D1;$B2;$F$1:$F1;"J2")

adapter pour J2

eric

Bonjour eriiic,

Merci pour ton code, mais il marche seulement si les prénoms des joueurs ne changent pas de place, or à chaque match les joueurs changent d'adversaire.

C'est pourquoi j'ai besoin de reconnaitre le prénom (la chaine de caractères) aussi, c'est ce qui complique la tâche...

JFL a écrit :

Bonjour Mathal, Eric, le forum,

Pour le plaisir avec une fonction personnalisée à partir d'excel 2013.

Bonjour JFL,

Merci ça marche pas mal

J'ai essayé de modifier des choses dans la fonction VBA: -3 pour match gagné, +3 pour match perdu, et Nul +1 mais là je n'ai pas trouvé la ligne donc j'ai passé cette étape... ?

Ca marchait jusqu'à ce que j'essaie d'autres handicaps avec des nombres décimaux ou des calculs...

Ca n'est pas possible ?

Voici le fichier:

Mathal.


curulis57 a écrit :

Bonjour le forum,

Bonjour l'équipe,

une autre façon de faire...

If Not Intersect(Target, Range("F2:F" & iRow)) Is Nothing Then
    iLig = 2 + (IIf(Target.Row Mod 8 < 2, (Int(Target.Row / 8) - 1) * 8, Int(Target.Row / 8) * 8))
    For y = 1 To 2
        sNom = Target.Offset(0, -(4 / y))
        Set rCel = Range("B" & iLig & ":D" & iLig + 7).Find(what:=sNom, lookat:=xlWhole)
        iJeu = IIf(Target.Value = "N", 0, -1)
        If iJeu = -1 Then iJeu = IIf(Val(Right(Target.Value, 1)) = y, -1, 1)
        iHandiPing = rCel.Offset(0, 1) + iJeu
        Target.Offset(0, (y * 2)) = iHandiPing
        If Target.Row < 18 Then
            Set rCel = Range("B" & iLig + 8 & ":D" & iLig + 15).Find(what:=sNom, lookat:=xlWhole)
            rCel.Offset(0, 1) = iHandiPing
        End If
    Next
End If

Pour le plaisir du code!

A+

Bonjour curulis57,

Merci pour ton fichier, le petit menu déroulant marche bien, mais autant j'ai à peu près compris comment fonctionnait la macro de JFL, autant là le code proposé est trop compliqué pour moi, peux-tu m'expliquer la démarche ?

Du coup j'ai essayé de modifier certaines des cellules, faire du copier/collé, etc... mais j'ai tout de suite des erreurs sur le code avec le déboggeur qui s'ouvre sur la ligne:

iJeu = IIf(Target.Value = "N", 0, -1)

et aussi

rCel.Offset(0, 1) = iHandiPing

Est-il possible de la modifier pour d'autres circonstances ou plus de joueurs ou des handicaps différents etc... ?

Voici la version que j'ai essayé de modifier:

10handiping-v2.xlsm (24.55 Ko)

Bonjour Mathal, le forum

Je vous livre une version améliorée avec une feuille "paramètres" pour valoriser les différents handicaps (valeur entière).

A tester !

Salut Mathal,

Salut l'équipe,

voici une version (nettement améliorable en terme d'aide à l'affichage) qui te permettra, à l'instar de celle de JFL, de paramétrer la macro sans devoir aller 'trifouiller' dedans, ce qui n'est guère le but d'une macro, d'autant que je l'ai encore raccourcie! 8)

A droite de ton tableau des matches, tu trouveras les PARAMETRES. Tu peux y changer :

  • les libellés de la liste de validation (ligne orange) ;
  • les valeurs de handicap (je n'ai pas encore peaufiné l'affichage des décimales).
Si tu as une formule pour calculer les handicaps, c'est là qu'il faut les mettre.

Si ces calculs devaient être dynamiques en cours de compétition, prière d'expliquer ta demande très précisément!

  • le nombre de poules jouées (obligatoire) ;
  • le nombre de matches par poule (obligatoire) ;

Les deux derniers paramètres sont obligatoires pour permettre à la macro de calculer qui, que , quoi, où...

Astuce : lors de la dernière poule, les nouveaux handicaps sont envoyés vers... la première poule! Côôôt!

Deux boutons au-dessus : RESET et REPLAY.

  • RESET = remise à zéro des tableaux et des handicaps de départ ;
  • REPLAY = remise à zéro des tableaux MAIS maintien des derniers handicaps calculés lors de la dernière poule précédente!
On peut recommencer un tour de table sur base des derniers résultats!

Il serait donc possible de créer une BDD avec les noms de tes joueurs et leur handicap en cours avec, corollaire, possibilité de les inscrire à une nouvelle compétition avec ou sans cet handicap!

Bref, il y a moyen de jouer...

A+

25handiping.xlsm (30.31 Ko)
curulis57 a écrit :

Bref, il y a moyen de jouer...

Rechercher des sujets similaires à "calcul handicap fonction resultat chaque joueur"