Changement Valeur Cellule

Résolu
Bonjour,

Comment vérifier la correspondance entre 2 cellules avant de pourvoir en modifier la valeur

Colonne R = Inventaire Total (Valeur modifier par utilisateur
Colonne S = Inventaire (Valeur calculée (R-U-W-Y))

Une fois toutes ces vérifications faite, l'utilisateur doit entrée la valeur de S dans la colonne R (trop long d'expliqué pourquoi (chargement en cours, chargement prévu, etc), donc c'est ce qu'il doit faire !)

Comment vérifier que l'utilisateur entre bien la même valeur dans R que dans S (genre : message Box pour valider si différent...)
Il faut en fait que je capte le moment où R change, valider si égale à S et agir ensuite. Quand je capter avec

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([R:R], Target) Is Nothing Then Exit Sub
(...)

Il est trop tard parce que la valeur à déjà changer....

Merci beaucoup à l'avance

"

5 réponses

  1. Comme un charme, merci... Faut juste faire le "pas-à-pas" au complet :) Parce qu'une fois le Application.EnableEvents à False, si tu arrêtes au milieu de la séquence pour déboguer, ça revient pas tout seul a True ! :) Mais on se fait avoir juste une fois ! :)

    Merci encore une fois !
    1. Merci beaucoup et désolé pour les remerciements. J'ai copier-coller mon code par-dessus l'intro que j'avais écrite et publier sans m'en rendre compte. Sincèrement désolé encore une fois et merci encore !
      1. Contributeur
        Un petit merci ou autre aurais été bien apprécié.
        Bref, comme la politesse n'est plus beaucoup enseignée je te répondrai malgré cela.
        Private Sub Worksheet_Change(ByVal Target As Range)
            If Not Intersect([R:R], Target) Is Nothing Then
                Application.EnableEvents = False
                If Target.Value <> AncValS Then
                '.....
                '.....
                '.....
                End If
                Application.EnableEvents = True
            End If
        1. Contributeur
          Bonjour,
          Je comprend rien à ton truc.. :-)
          Sauf que.. peut-être avec..
          Option Explicit
          Dim AncVal
          
          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
              If Not Intersect([R:R], Target) Is Nothing Then
                  AncVal = Target.Value
              End If
          End Sub
          
          Private Sub Worksheet_Change(ByVal Target As Range)
              If Not Intersect([R:R], Target) Is Nothing Then
              'Je comprend pas quel comparaison y faut faire
                  If AncVal = Target.Value Then
                      '......
                  End If
              End If
          End Sub

          A+
          1. Option Explicit
            Dim AncValR, AncValS, OK, Ligne

            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            If Not Intersect([R:R], Target) Is Nothing Then
            AncValR = Target.Value
            AncValS = Target.Offset(0, 1).Value
            Ligne = Target.Row
            End If
            End Sub

            Private Sub Worksheet_Change(ByVal Target As Range)
            If Not Intersect([R:R], Target) Is Nothing Then
            If Target.Value = AncValS Then
            Else
            ' Valeur entrée en R différente de la valeur en S ?
            OK = MsgBox("Confirmer Valeur", vbYesNo, "Valeur Entrée différente de...")
            If OK = 7 Then ' Si NON, remettre ancienne valeurs
            'Bogue ici parce relance Private Sub Worksheet_Change(ByVal Target As Range)
            Range("S" & Ligne) = AncValS
            Range("R" & Ligne) = AncValR
            End If
            End If
            End If
            End Sub