Macro quand une seule cellule change sous condition

Salmander

XLDnaute Occasionnel
Bonjour,
Je souhaiterais activer une macro quand une cellule change, mais seulement quand un événement particulier est lancé.

Dans le cas de mon fichier, je souhaiterais copier la plage B6:C7 (nommée : Valeur) dans la plage E6:F7 (nommée : Copie),
mais uniquement quand D1 est « OK ».
 

Pièces jointes

  • Copie.xlsx
    7.7 KB · Affichages: 6

Jacky67

XLDnaute Barbatruc
Bonjour,
Je souhaiterais activer une macro quand une cellule change, mais seulement quand un événement particulier est lancé.

Dans le cas de mon fichier, je souhaiterais copier la plage B6:C7 (nommée : Valeur) dans la plage E6:F7 (nommée : Copie),
mais uniquement quand D1 est « OK ».
Bonjour,
Sans macro….
En E6
=SI(D1="ok";Valeur;"")

Par macro
Dans le module de la feuille en question
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$1" Then Exit Sub
Application.EnableEvents = False
If UCase(Target.Value) = "OK" Then
  [copie] = [valeur]
Else
  [copie] = ""
End If
Application.EnableEvents = True
End Sub
 

Salmander

XLDnaute Occasionnel
Merci Beaucoup,
Bien sûr pour la formule sans macro, j’avais volontairement simplifié le besoin.
En revanche, cette macro ne copie que lorsqu’on modifie D1 avec « Ok ».
Dans mon cas, j’aurais besoin que Copie soit le reflet de Valeur tant que D1 est à « Ok » et que je modifie Valeur.
 

Jacky67

XLDnaute Barbatruc
Dans mon cas, j’aurais besoin que Copie soit le reflet de Valeur tant que D1 est à « Ok » et que je modifie Valeur.
Re….
Essaye ceci
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$1" Or Target.Address = [valeur].Address Then
  Application.EnableEvents = False
  If UCase([d1]) = "OK" Then
    [copie] = [valeur]
  Else
    [copie] = ""
  End If
  Application.EnableEvents = True
End If
End Sub
 

Discussions similaires

Réponses
9
Affichages
380

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510