VBA : Si valeur d'une cellule egale valeur d'une autre alors -1 pour l'autr

Bonjour tout le monde !

Je suis trés heureux de pouvoir poster car c'est la première fois et sur ce site tout le monde m'a déjà beaucoup aidé grâce à vos posts sur plein de sujets différents. Merci

Aujourd'hui, je fais un tableau des scores d'un jeu de dé.

Il y a 3 joueurs A, B et C dont les scores sont de B3 à D3.

Alors voilà, j'aimerais écrire en VBA que si le score que je rentre en cellule B3, C3 ou D3 est égale au score d'un autre joueur (cellule B3 à D3) alors le score de l'autre joueur perd 1 point.

Exemple :

A avait 30 point avant de jouer B = 28pt C = 26pt

Si A perd 2 points, je rentre 28 dans sa case des scores, B a déjà 28 donc B tombe à 27

Et j'aimerais que ça marche pour le combo, c'est à dire que 2 scores sont impactés :

Exemple d'un combo :

A avait 30 point B = 28pt C = 27pt

Si A perd 2 points il tombe a 28pt, B a déjà 28 donc il tombe à 27, C a déjà 27 donc il tombe à 26.

Merci de votre précieuse aide.

Belle journée

Bonjour,

une macro événementielle à mettre dans le code de la feuille concernée. (se déclenche quand tu introduis une valeur en B3:D3)

Private Sub Worksheet_Change(ByVal Target As Range)
    Set plagepoint = Range("B3:D3")
    If Intersect(Target, plagepoint) Is Nothing Then Exit Sub
    For Each Point In plagepoint
        If Point = Target.Value And Point.Address <> Target.Address Then
            Target = Target - 1
        End If
    Next
End Sub

C'est quasi ça !! =)

Merci h2so4 !

Sauf que là formule fait l'inverse de ce que je souhaite

Avec la formule que tu as donné, la cible qui perd des points n'est pas la bonne. Peut être faut il changer la target ?

Car actuellement, par rapport à l'exemple que j'avais donné :

Joueur A avait 30pt B = 28 et C = 26

Si A tombe à 28 pt alors comme B est déja à 28, B tombe à 27

Avec la formule donnée, c'est A qui tombe à 27

Merci encore

bonjour,

voici

Private Sub Worksheet_Change(ByVal Target As Range)
    Set plagepoint = Range("B3:D3")
    If Intersect(Target, plagepoint) Is Nothing Then Exit Sub
    For Each Point In plagepoint
        If Point.Value = Target.Value And Point.Address <> Target.Address Then
            Point.Value = Point.Value - 1
        End If
    Next
End Sub

Merci d'avoir pris le temps de m'aider !

C'est parfait, exactement cela !

Belle journée !

Rechercher des sujets similaires à "vba valeur egale autr"