Changement Valeur Cellule

Résolu/Fermé
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016 - 10 déc. 2013 à 19:24
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016 - 13 déc. 2013 à 19:54
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

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
10 déc. 2013 à 23:51
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
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016
12 déc. 2013 à 21:17
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
12 déc. 2013 à 22:42
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
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016
13 déc. 2013 à 14:43
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 déc. 2013 à 19:01
Et... ça fonctionne ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016
13 déc. 2013 à 19:54
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