XL 2019 Afficher msgbox et si la valeur d'une cellule a changé sur une autre feuille

pat66

XLDnaute Impliqué
Bonjour le forum,

voilà j'ai besoin de votre aide pour réaliser cette macro

J'ai 2 feuilles, feuil1 cellule D52 et feuil2 cellule M17

Je saisi une valeur sur la feuil1 D52, ensuite j'affiche la feuil2, un msgbox doit s'afficher automatiquement si la valeur de la cellule feuil1 D52 à changé
Le msgbox me demande si je veux mettre à jour la valeur dans feuil2 M17 avec oui ou non

merci de votre aide
 
Solution
EDIT : Pas vu le post de @vgendron, pb de rafraichissement
Bonsoir à toutes & à tous,
bonsoir @pat66
Une solution qui ne propose qu'une fois la modification avec 2 noms définis :
OldVal (l'ancienne valeur de la cellule D52 de la feuil1)
Proposé (O ou N, selon que le changement a été proposé ou non)
Code de Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
     Set Source = Me.[D52]
     If Intersect(Target, Source) Is Nothing Then Exit Sub
     If [OldVal] <> Source.Value Then
          With ThisWorkbook
               .Names("OldVal").RefersTo = Source.Value
               .Names("Proposé").RefersTo = "N"
          End With
     End If
End Sub
Code de Feuil2 ;
VB:
Private Sub Worksheet_Activate()
     Set...

vgendron

XLDnaute Barbatruc
Bonjour

Sans fichier exemple, ma contribution sera juste la suivante:

il faut mettre du code dans l'évènement _change de la feuille
faire un test sur la target: if target=range("D52")
VB:
if msgbox ("Souhaitez vous mettre la nouvelle valeur " &target.value &" dans la feuille 2?",vbyesno)=vbyes then
   sheets(Feuill2").range("M17")=target.value
end if
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
EDIT : Pas vu le post de @vgendron, pb de rafraichissement
Bonsoir à toutes & à tous,
bonsoir @pat66
Une solution qui ne propose qu'une fois la modification avec 2 noms définis :
OldVal (l'ancienne valeur de la cellule D52 de la feuil1)
Proposé (O ou N, selon que le changement a été proposé ou non)
Code de Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
     Set Source = Me.[D52]
     If Intersect(Target, Source) Is Nothing Then Exit Sub
     If [OldVal] <> Source.Value Then
          With ThisWorkbook
               .Names("OldVal").RefersTo = Source.Value
               .Names("Proposé").RefersTo = "N"
          End With
     End If
End Sub
Code de Feuil2 ;
VB:
Private Sub Worksheet_Activate()
     Set Cible = Me.[M17]
     Set Source = Feuil1.[D52]
     If Cible.Value <> Source.Value And [Proposé] = "N" Then
          rép = MsgBox("Valeur modifiée" & vbCrLf & Chr(9) & _
                        "ancienne = """ & Cible.Value & """" & vbCrLf & Chr(9) & _
                        "nouvelle = """ & Source.Value & """" & vbCrLf & _
                        "Appliquer le changement ?", vbYesNo)
          If rép = vbYes Then
               Cible.Value = Source.Value
          Else
               ThisWorkbook.Names("Proposé").RefersTo = "O"
          End If
     End If
End Sub

Voir la pièce jointe
Bon courage
 

Pièces jointes

  • Proposer reporter Valeur de Feuil1 vers Feuil2.xlsm
    17.4 KB · Affichages: 2
Dernière édition:

pat66

XLDnaute Impliqué
Bonjour à toutes & à tous,
bonjour vgendron
bonjour AtTheOne,

Quelle expertise !!!, j'ai testé votre fichier c'est exactement ce dont il me fallait, merci
Je vais l'adapter à mon classeur, je reviens vers vous
Votre générosité vous honore à tous les 2 !
un grand merci à vous

Pat66
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95