Comparaison de valeurs de cellule et prise en compte du changement de valeur [Résolu]

Signaler
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,

A l'intérieur d'un feuille en haut de celle-ci j'ai une cellule (disons B3) dont l'utilisateur peur faire varier la valeur (les valeurs de celle-ci ont été prédéfinis via la fonction données-validation d'Excel)

En bas de la feuille, j'ai une cellule identique à B3 mais en B265.

J'aimerais réaliser la chose suivante :

Quand l'utilisateur change la valeur de B3, que B265 prenne la valeur changée de B3
Quand l'utilisateur change la valeur de B265, que B3 prenne la valeur changée de B265.

Avez vous une idée à me proposer ?

PS : j'avais commencé avec ceci ... mais c'a marche pô !

Sub test1()

If Range("B265").Value = Range("B3").Value Then
Exit Sub
Else
Range("B265").Value = Range("B3").Value
End If
End Sub

Sub test2()

If Range("B265").Value = Range("B3").Value Then
Exit Sub
Else
Range("B265").Value = Range("B3").Value
End If
End Sub


Je vous remercie par avance de votre aide !

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
Salut

Je te propose d'utiliser la détection de changement de Worksheet_Change :
Quand la cellule sur laquelle le changement vient d'avoir lieu est B3 ou B265, on recopie l'un sur l'autre.
Difficulté : En modifiant B265 avec le contenu de B3, cette même Sub se déclenchera aussi : il faut donc bypasser la détection pendant ce changement --> Utilisation d'un booléen déclaré en Static
Le Static est la même chose que Dim sauf que la variable conservera sa valeur entre deux cycles d'appel :
Private Sub Worksheet_Change(ByVal Target As Range)
    Static bChangementVolontaire As Boolean
    If Not bChangementVolontaire Then
        If Target.Address = "$B$3" Then
            bChangementVolontaire = True
                Range("B265").Value = Target.Value
            bChangementVolontaire = False
        ElseIf Target.Address = "$B$265" Then
            bChangementVolontaire = True
                Range("B3").Value = Target.Value
            bChangementVolontaire = False
        End If
    End If
End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013

Waouhhhh !

Rapide ! Efficace ! Super ... enfin tout plein de superlatif !

Merci de m'enlever cette aiguille du pied !
Et en plus j'ai encore appris !

Un GRAND merci Jack !
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
Ça fait plaisir de voir quelqu'un d'enthousiaste !