Macro déclenchée selon valeur d'une cellule

melba

XLDnaute Occasionnel
Bonjour,

Est-il possible de déclencher une macro uniquement si une cellule contient une certaine valeur?

Merci pour votre réponse

Melba
 

Excel-lent

XLDnaute Barbatruc
Re : Macro déclenchée selon valeur d'une cellule

Bonsoir Melba, Néné06, le fil,


Avec une question de ce style, nous sommes tenté de te répondre : "oui c'est possible".
Ce qui tu le reconnait répond parfaitement à ta question ;)

Mais à mon avis tu veux une réponse plus détaillé? Alors si ta question également pouvait être plus détaillé, ce serait plus facile ;)

Réponse détaillée :

Macro à placer sur la feuille concernée :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$A$1" And Target.Value = "Coucou" Then
       Range("C5") = "on est champion"
   End If
End Sub

La macro ci-dessus se déclenche à chaque changement sur l'onglet où se trouve la macro.
Il vérifie si la modification a eu lieu dans la cellule A1
----> si la modification a eu lieu ailleur, la macro s'arrête là, ne fait rien et rend la main à l'utilisateur
----> si la modification a eu lieu en A1 (du fameux onglet évidement), il vérifie que la valeur saisie en A1 est le mot "Coucou"
---------> si oui : il écrit "on est champion" dans la cellule C5. Puis rend la main à l'utilisateur
---------> si non : la macro s'arrête là, ne fait rien, et rend la main à l'utilisateur

Evidement l'endroit où se trouve la ligne de code suivante :
Range("C5") = "on est champion"

tu es censé mettre ta macro que tu veux faire exécuter par excel ;)

Bonne soirée à toi
Cordialement
 

Si...

XLDnaute Barbatruc
Re : Macro déclenchée selon valeur d'une cellule

salut

et Si... A1 prend la valeur "Coucou" avec une formule (par exemple, en A1 : =Si(B1="";"";"Coucou")?
Voilà en quoi la question mérite approfondissement.

Dans la première éventualité, j'écrirais :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If [A1] = "Coucou" Then
    Application.EnableEvents = False
    Macro 'lancement de la procèdure appelée ainsi)
    Application.EnableEvents = True
  End If
End Sub

sachant que pour certaines versions (dont la mienne) les lignes "Application.EnableEvents..." sont obligatoires si la macro lancée place, à un moment donné, "Coucou" en A1.
 

melba

XLDnaute Occasionnel
Re : Macro déclenchée selon valeur d'une cellule

Bonjour,

Avant de donner plus de détails, je voulais savoir si ce que je souhaite faire est réalisable.
Merci pour vos réponses qui sont encourageantes.
Je vous joins un fichier ce qui sera plus explicite en effet.
J'ai mis le type de macro qui devrait s'appliquer.
Elle est très simple mais je ne sais pas écrire le code indiquant qu'elle ne doit s'appliquer que si la date de B4 est inférieure au 01/01/2012.
Par ailleurs, peut-être pourriez-vous aussi m'aider pour la mise en forme conditionnelle à appliquer sur la rubrique invité?
Merci par avance
 

Pièces jointes

  • Test macro déclenchée selon valeur d une cellule.xlsm
    15.8 KB · Affichages: 68
  • Test macro déclenchée selon valeur d une cellule.xlsm
    15.8 KB · Affichages: 78
  • Test macro déclenchée selon valeur d une cellule.xlsm
    15.8 KB · Affichages: 79
Dernière édition:

néné06

XLDnaute Accro
Re : Macro déclenchée selon valeur d'une cellule

Bonjour Melba,Si.., Excel-lent et le Forum

Essayes cet exemple avec macro en

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Format(Cells(4, 2), "YYYY") < "2012" Then
Cells(6, 1) = ""
Cells(6, 2) = ""
Else
Cells(6, 1) = "invité"
Cells(6, 2) = "" 'ecriture de ce que tu désires
End If
Application.EnableEvents = True
End Sub

et dis-nous ??

A+
 

Pièces jointes

  • Copie de Test macro déclenchée selon valeur d une cellule.xlsm
    17.6 KB · Affichages: 62
  • Copie de Test macro déclenchée selon valeur d une cellule.xlsm
    17.6 KB · Affichages: 70
  • Copie de Test macro déclenchée selon valeur d une cellule.xlsm
    17.6 KB · Affichages: 72

melba

XLDnaute Occasionnel
Re : Macro déclenchée selon valeur d'une cellule

Bonjour,

merci de vous intéresser à mon problème :
je viens de tester la proposition de néné06, l'ennui c'est que les zones vêtements et chaussures en (11,3) et (11,4) n'apparaissent plus quand je mets "x" en (6,2) et que la date est >=2012. En fait la macro efface systématiquement le "x", que je sois avant ou après 2012.
Or ce que je souhaite c'est que le "x" soit effacé en (6,2)uniquement si l'année est < à 2012.
Le contenu de (6,2), (11,3) et (11,4) ne doivent s'effacer que si l'année est inférieure à 2012.
Par ailleurs si la date est >= à 2012 et que la cellule (6,2) est alimentée avec un "x", je dois avoir accès aux cellules (11,3) et (11,4).
Je ne sais pas si c'est bien clair.

Merci par avance pour vos suggestions
 

néné06

XLDnaute Accro
Re : Macro déclenchée selon valeur d'une cellule

Re,

En nous donnant un peu plus à manger, comme une pièce jointe plus détaillée, nous pourrons régler ce problème.
Dans l' exemple fourni, il n'est nullement question des cellules (11,3) et (11,4)???

A+
 

melba

XLDnaute Occasionnel
Re : Macro déclenchée selon valeur d'une cellule

Re,

désolée je joins à nouveau mon fichier : je fais référence aux cellules C11 et D11 (donc (11,3) et (11,4).

Merci
 

Pièces jointes

  • Test macro déclenchée selon valeur d une cellule.xlsm
    16.1 KB · Affichages: 56
  • Test macro déclenchée selon valeur d une cellule.xlsm
    16.1 KB · Affichages: 62
  • Test macro déclenchée selon valeur d une cellule.xlsm
    16.1 KB · Affichages: 50

néné06

XLDnaute Accro
Re : Macro déclenchée selon valeur d'une cellule

Re,

Essayes ceci ??

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Format(Cells(4, 2), "YYYY") < "2012" Then
Cells(6, 1) = ""
Cells(6, 2) = ""
Cells(11, 3) = ""
Cells(11, 4) = ""
Else
Cells(6, 1) = "invité"
Cells(6, 2) = "x" 'ecriture de ce que tu désires
End If
Application.EnableEvents = True
End Sub

Voir Pj

A+
 

Pièces jointes

  • Copie de Copie de Test macro déclenchée selon valeur d une cellule.xlsm
    17.7 KB · Affichages: 61

ROGER2327

XLDnaute Barbatruc
Re : Macro déclenchée selon valeur d'une cellule

Bonsoir à tous


Une autre proposition dans le classeur joint.​


Bonne soirée.


ROGER2327
#6246


Jeudi 5 Phalle 139 (Assomption de Sainte Messaline - fête Suprême Seconde)
28 Thermidor An CCXX, 7,2183h - lupin
2012-W33-3T17:19:26Z
 

Pièces jointes

  • Copie de Test macro déclenchée selon valeur d une cellule.xlsm
    18.9 KB · Affichages: 77
  • Copie de Test macro déclenchée selon valeur d une cellule.xlsm
    18.9 KB · Affichages: 85
  • Copie de Test macro déclenchée selon valeur d une cellule.xlsm
    18.9 KB · Affichages: 92

melba

XLDnaute Occasionnel
Re : Macro déclenchée selon valeur d'une cellule

Bonjour,

Tout d'abord un grand merci pour vos 2 propositions.
Celle de néné06 fonctionne mais un bémol :elle ne prend pas en compte le cas où je suis en 2012 mais sans statut invité : je ne peux pas enlever le "x" en (6,2).
La proposition de Roger fonctionne à merveille : j'ai vu par ailleurs que tu as modifié mes mises en forme conditionnelle avec des formules que je ne savais pas écrire. Je vais essayer de les reproduire pour mieux les comprendre.
En tout cas vous êtes vraiment des as et je progresse toujours pas à pas avec vous.

@+
 

melba

XLDnaute Occasionnel
Re : Macro déclenchée selon valeur d'une cellule

Bonsoir,

J'ai à nouveau besoin de votre aide.
J'ai essayé de comprendre le code de Roger et ai voulu apporter une petite modification pour pouvoir l'intégrer dans mon fichier réel.
Malheureusement je ne connais pas l'écriture des macros et suis bloquée.
Je pense que cela va être enfantin pour vous.

Comment dans le code de Roger adapté ici, changer :
Set z = Range("D11:F11")
pour que la macro efface le contenu de D11 et le contenu de F11 et non toute les cellules D11,E11 et F11?

Dans mon fichier réel j'ai des choses qui ne doivent pas être effacées en E11.
Il est vrai que le fichier que je vous avais mis pour l'essai présentait notamment 2 cellules à effacer en C11 et D11. Je joins un nouveau fichier.

Merci par avance

Option Explicit

Private Sub Worksheet_Change(ByVal Cible As Range)
Dim d As Date, x As Range, y As Range, z As Range
d = DateSerial(2004, 1, 1)
Set x = Range("c8")
Set y = Range("B10")
Set z = Range("D11:F11")
If Not Intersect(Cible, Union(x, y)) Is Nothing Then
If IsDate(x.Value) Or IsEmpty(x) Then
Application.EnableEvents = False
If x.Value < d Then Union(y, z) = Empty Else If Not Intersect(Cible, y) Is Nothing Then If y.Value <> "x" Then z = Empty
Application.EnableEvents = True
End If
End If
End Sub

Sub rst()
Application.EnableEvents = True
End Sub
 

Pièces jointes

  • 3 test macro liée à valeur cellule.xlsm
    16.7 KB · Affichages: 63

melba

XLDnaute Occasionnel
Re : Macro déclenchée selon valeur d'une cellule

Bonjour,

Merci pour votre aide, je viens de tester la proposition de néné06, maintenant effectivement la cellule E11 n'est plus effacée quand la date est < 2012.
Si j'ai bien compris cela est la conséquence de ce code : If x.Value < d Then Cells(11, 4) = Empty: Cells(11, 6) = Empty Else If Not Intersect(Cible, y) Is Nothing Then If y.Value <> "x" Then z = Empty.
Cependant le problème c'est que le "x" devrait s'effacer aussi quand la date est < à 2012.
Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 625
Membres
103 608
dernier inscrit
rawane