Problème pour des calculs automatique

Bonjour, étant un peu perdu, j'ai décidé de m'inscrire sur ce site, espérant recevoir un peu d'aide.

Je suis sous excel 2007, et je voudrais sur ma feuille effectuer un calcul automatique à partir d'une cellule qui varie.

Je voudrais en fait ajouter le nombre de la cellule F7 (qui change car j'utilise sur celle si un Index et equiv), à une cellule qui contient le score total de tous les participants (noms en colonne B, et score en colonne C) en fonction du nom choisit.

En résumé, j'ai le nom de la personne a qui il faut actualiser le score (son nom est en F4, ce nom peut varier), et j'ai la valeur à ajouter en F7.

La cellule à modifier est une cellule de la colonne C (en face du nom correspondant à F4)

Si quelqu'un à la solution merci d'avance !!!

Bonjour et bienvenu,

Si tu as un fichier, envoie-le nous. Ca sera plus concrèt.

https://www.excel-pratique.com/~files/doc/Tournoi_ATP.xlsx

Voilà mon fichier !

Donc lorsque j'enregistre le match je voudrais qu'il affecte l'ancien score du joueur avec les points qu'il vient de gagner ou perdre (les points gagnés/perdus dépendent du nombre de points d'écart entre les joueurs)

Re,

Merci d'enregistrer au format .xls pour être exploité par les plus grands nombres d'intervants.

https://www.excel-pratique.com/~files/doc/Tournoi_ATP.xls

Oups désolé j'y avais pas pensé !

Merci en tout cas pour l'aide !

Bonsoir,

Voici une macro à placer dans un module

Sub actualise()
'Macro par Dan
Dim lig1 As Byte, lig2 As Byte
With Application.WorksheetFunction
lig1 = .Match(Range("F4"), Range("Liste").EntireColumn, 0)
lig2 = .Match(Range("I4"), Range("Liste").EntireColumn, 0)
End With
Range("C" & lig1) = Range("C" & lig1) + Range("F7")
Range("C" & lig2) = Range("C" & lig2) + Range("I7")
Range("F4").ClearContents
Range("I4").ClearContents
End Sub

Après mise à jour, le code supprime les noms en F4 et I4.

Associe cette macro à ton bouton "actualiser le classement"

Amicalement

Dan

Merci beaucoup ça marche nikel !

edit: j'ai parlé un peu vite !

En fait en faisant pas mal de test je m'aperçois que la formule pour le perdant du match ne fonctionne pas vraiment (le chiffre soustrait ne correspond pas à I7, il y a a un décalage de 2-3 points) dès lors que le joueur perd des points, c'est à dire si I7 est négatif.

Par contre dès que le chiffre est positif tout marche bien, qu'est-ce que je dois modifier dans la macro pour que ça marche aussi bien en positif qu'en négatif ?

Merci d'avance !

Salut,

La macro de Dan fonctionne même quand I7 est négatif, cela soustrait bien les points au classement.

Pour toi, quand I7 est négatif, cela te soustrait plus de points ou moins de points ? ou qu'est ce que ça fait concrétement ?

Souri84

Re,

Oui il y a peut être un petite erreur. Ce que j'ai compris c'est que le joueur qui perd (I4) perd des points.

d'où :

Si I4 est inférieur à 0, on soustrait un nombre négatif --> - par - donne +

Si I4 est supérieur à 0 on soustrait un nombre positif --> + par - donne -

La macro corrigée ci-après

Sub actualise()
'Macro par Dan
Dim lig1 As Byte, lig2 As Byte
With Application.WorksheetFunction
lig1 = .Match(Range("F4"), Range("Liste").EntireColumn, 0)
lig2 = .Match(Range("I4"), Range("Liste").EntireColumn, 0)
End With
Range("C" & lig1) = Range("C" & lig1) + Range("F7")
If Range("I7") < 0 Then
Range("C" & lig2) = Range("C" & lig2) + Range("I7")
Else: Range("C" & lig2) = Range("C" & lig2) - Range("I7")
End If
Range("F4").ClearContents
Range("I4").ClearContents
End Sub

Si pb donne un exemple concret.

Amicalement

Dan

5classeur-1.xlsx (70.75 Ko)

Alors le joueur qui perd peut aussi gagner des points, donc la première formule devrait fonctionner, or quand je fais des simulations de match, en faisant qu'un joueur plus fort perde contre un joueur plus faible (selon le nombre de point de départ), le nombre de point que le joueur perd n'est pas égal à I7. Au lieu de perdre 3 points (comme affiché en I7) , le joueur n'en perd qu'un seul !

Et à chaque fois il y a un écart de plusieurs points (des fois 2, des fois 3...)

En fait la formule enlève toujours moins de points que prévu. (des fois elle en ajoute aussi quand elle devrait en enlever qu'un !)

Voilà c'est bizarre !

c'est bon j'ai trouvé la problème !

En fait lorsque l'on faisait la mise a jour de score du 2è joueur, le score du premier avait déjà changé, donc du coup, la case sur laquelle on s'appuyait pour voir l'écart se modifiait directement.

J'ai donc rajouter une ligne pour enregistrer le nombre de points à enlever ou ajouter au perdant dans une autre case !

Sub actualise1()
'Macro par Dan
Dim lig1 As Byte, lig2 As Byte
With Application.WorksheetFunction
lig1 = .Match(Range("F4"), Range("Liste").EntireColumn, 0)
lig2 = .Match(Range("I4"), Range("Liste").EntireColumn, 0)
End With
Range("I11") = Range("I7")
Range("C" & lig1) = Range("C" & lig1) + Range("F7")
Range("C" & lig2) = Range("C" & lig2) + Range("I11")
Range("F4").ClearContents
Range("I4").ClearContents
Range("I11").ClearContents
End Sub

Merci à vous pour m'avoir bien avancer, sinon je crois que j'aurai abandonné !

re,

Ok. Il y a moyen de maitriser complètement par VBA mais il aurait fallu quelques exemples comme je te l'ai demandé.

Mais si c'est bon pour toi, on peut cloturer le fil.

Amicalement

Dan

Rechercher des sujets similaires à "probleme calculs automatique"