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. 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
  2. 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. 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. 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 !