XL 2013 (RESOLU) Message lors de modification de la cellule fusionnée

chaelie2015

XLDnaute Accro
Bonjour Forum
Je suis à la recherche d'un code qui déclenche un message lorsque je modifie la cellule Y10 (fusionnée) de la feuille active. Ce message ne doit s'afficher que si la nouvelle valeur saisie est différente de celle déjà présente dans la cellule.
Par exemple, si la valeur actuelle de Y10 est 5 et que je saisis à nouveau 5, rien ne se produit. Cependant, si je saisis une autre valeur différente de 5 (peu importe si c'est vide ou autre), un message doit apparaître indiquant qu'il y a un changement.
A+
 

Pièces jointes

  • Charlier Changement Cllule Message Alerte.xlsx
    7.8 KB · Affichages: 3
Solution
Bonjour chaelie2015 et les autres,

On peut utiliser :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Y10]) Is Nothing Then Exit Sub
Dim sel As Range, mem
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    Set sel = Selection
    .Undo 'annule la modification
    mem = [Y10]
    .Undo 'rétablit la modification
    sel.Select
    .EnableEvents = True
    .ScreenUpdating = True
End With
If [Y10] <> mem Then MsgBox "La cellule Y10 a été modifiée..."
End Sub
A+

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Chaelie,
Un essai en PJ avec :
VB:
Public ValeurAvant
' Récupère la valeur de Y10 sur clic sur Y10, et stocke la valeur en public
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, [Y10:Z10]) Is Nothing Then ValeurAvant = [Y10]
End Sub
' Sur changement de valeur de Y10 alors message d'alerte.
Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [Y10:Z10]) Is Nothing Then
        a = ValeurAvant
        If ValeurAvant <> Target Then MsgBox "La valeur a été modifiée."
    End If
End Sub
Quand on clique sur la cellule on stocke la valeur en public.
Quand on valide la cellule on teste la valeur par rapport à la valeur précédente.
 

Pièces jointes

  • Charlier Changement Cllule Message Alerte.xlsm
    13.5 KB · Affichages: 3

chaelie2015

XLDnaute Accro
Bonjour Sylvanu, Phil69970
Je vous remercie pour votre réponse
@ Sylvanu : Votre réponse est parfaite et répond parfaitement à mes besoins, cependant, elle rencontre un problème si je supprime la cellule, j'ai une erreur d'exécution à ce niveau 'If ValeurAvant <> Target Then MsgBox "La valeur a été modifiée."'
@ Phil69970: Le message s'affiche même si je saisis la même valeur, ce n'est pas ce que j'avais souhaité.
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour chaelie2015 et les autres,

On peut utiliser :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Y10]) Is Nothing Then Exit Sub
Dim sel As Range, mem
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    Set sel = Selection
    .Undo 'annule la modification
    mem = [Y10]
    .Undo 'rétablit la modification
    sel.Select
    .EnableEvents = True
    .ScreenUpdating = True
End With
If [Y10] <> mem Then MsgBox "La cellule Y10 a été modifiée..."
End Sub
A+
 

Pièces jointes

  • Charlier Changement Cllule Message Alerte.xlsm
    14.8 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Sur mon PC je n'ai pas ce souci :
Test4.gif

C'est bien de cela dont vous parlez ?
 

Discussions similaires

Réponses
5
Affichages
404
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35