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

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour