Changement Valeur Cellule

Résolu
DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
    1. DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
       
      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
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    0
  3. DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
     
    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 !
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Et... ça fonctionne ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
     
    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 !
    0