Comparaison de valeurs de cellule et prise en compte du changement de valeur

Résolu
gerardcjf Messages postés 47 Date d'inscription mardi 3 juillet 2007 Statut Membre Dernière intervention 26 décembre 2013 - 22 juil. 2010 à 10:39
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 22 juil. 2010 à 14:40
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

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 juil. 2010 à 11:32
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)
3
gerardcjf Messages postés 47 Date d'inscription mardi 3 juillet 2007 Statut Membre Dernière intervention 26 décembre 2013
22 juil. 2010 à 12:05
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 !
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 juil. 2010 à 14:40
Ça fait plaisir de voir quelqu'un d'enthousiaste !
0
Rejoignez-nous