Valeur Cellule Lance Une Macro

Berg1664

XLDnaute Occasionnel
Bonjour,

J'ai vu des sujets se rapprochant mais que je n'arrive pas à m'approprier, je suis encore trop inculte en langage VBA

Mon souhait : Si cela est possible que la macro "jaune" démarre si la valeur de la cellule D1 est égale à 4

Voir fichier joint

Merci à vous

Berg1664
 

Pièces jointes

  • TEST LANCEMENT MACRO DEPUIS VALEUR CELLULE.xls
    29.5 KB · Affichages: 55

mromain

XLDnaute Barbatruc
Re : Valeur Cellule Lance Une Macro

bonjour Berg1664,

voici une solution :
dans le code de la feuille concernée (clic droit sur l'onglet --> visualiser le code), ajouter ça :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'si ce n'est pas la cellule D1 qui vient de changer, quitter la macro
If Application.Intersect(Target, Range("D1")) Is Nothing Then Exit Sub
If Target.Text = "4" Then 'si la valeur est = à 4, alors
    Jaune
Else    'sinon
    Blanc
End If
End Sub

a+
 

Berg1664

XLDnaute Occasionnel
Re : Valeur Cellule Lance Une Macro

Hello,
C'est bien Ok quand on saisit directement 4

1/Mais Cela ne fonctionne plus si on dit que la cellule D1 est égale au contenu d'une autre Cellule, F1 par exemple, (en saisissant 4 dans F1)

2/ Cela ne marche pas non plus si la cellule D1 est une fonction sous-total égale à 4
Y'a til un moyen ?
Merci beaucoup

Berg1664
 

mromain

XLDnaute Barbatruc
Re : Valeur Cellule Lance Une Macro

re bonjour,

voici le code légèrement modifié :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D1").Text = "4" Then 'si la valeur est = à 4, alors
    Jaune
Else    'sinon
    Blanc
End If
End Sub

cependant, à chaque changement de valeur de n'importe quelle cellule de la feuille, la macro va exécuter une des 2 autres macros (Blanc et Jaune).
qui finissent pas la sélection de la cellule A1.
Donc à chaque changement d'une des cellules, tu vas te trouver en A1.
je te conseille donc de légèrement modifier tes macros tel que :
Code:
Sub Blanc()
    Columns("A:B").Interior.ColorIndex = xlNone
End Sub


Sub Jaune()
        Columns("A:B").Interior.ColorIndex = 6
        Columns("A:B").Interior.Pattern = xlSolid
End Sub

ou de te passer de ces macros avec le code suivant :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D1").Text = "4" Then 'si la valeur est = à 4, alors
    Columns("A:B").Interior.ColorIndex = 6
    Columns("A:B").Interior.Pattern = xlSolid
Else    'sinon
    Columns("A:B").Interior.ColorIndex = xlNone
End If
End Sub

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 249
Membres
102 836
dernier inscrit
Ali Belaachet