VBA macro clic sur une cellule

Résolu
ori05 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -  
ori05 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai fait une macro qui s'exécute en fonction du contenu d'une cellule :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If (ActiveCell.Value = "NOK") Then
MsgBox "Add a comment"
End If
End Sub

Le problème est que la valeur est dans une liste déroulante OK/NOK et si je selectionne OK et ensuite je sélectionne NOK la msgbox n'apparait pas... Il faut que je clique sur n'importe quelle cellule de la feuille et que je reclique sur cette cellule pour que le message apparaisse....

Savez vous comment je pourrais régler ce problème ??

Merci d'avance :-)

7 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut,
En fait, dans ce cas, la macro ne doit pas tester la valeur contenue dans la cellule mais la valeur du combobox.
Double clic sur la liste déroulante donne :
Private Sub ComboBox1_Change()

End Sub
entre ces deux lignes indiquer :
If ComboBox1.Value = "NOK" Then
MsgBox "Add a comment"
End If
à noter toutefois que ComboBox1 est le nom de ta liste déroulante nom susceptible d'être différent chez toi.
0
ori05 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   3
 
En fait ma liste n'est pas faite à partir d'une combobox, mais de données->validation->liste....
Donc ça ne va pas marcher....si ?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Oui non.
Dans ton cas, ta macro est donc la bonne. Il convient de tester la valeur de ta cellule. Alors comment et quand veux tu que la macro se lance?
0
ori05 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   3
 
Je voudrais que ma macro se lance dès que je sélectionne NOK dans ma liste. En fait elle marche bien, mais une fois la selection faite il faut que je clique à coté et ensuite que je REclique sur ma cellule pour que le message s'affiche....c'est ça qui m'embete
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Alors juste remplace If ActiveCell... par If ActiveSheet.Range("A1")... Si ta liste est en A1 bien entendu.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour

ci dessous la cellule "validation" est E2

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$2" Then Exit Sub
If Target = "NOK" Then
   MsgBox "c'est gagné!"
End If

End Sub
0
ori05 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   3
 
michel_m j'ai testé ta solution mais malheureusement ça ne change rien du tout par rapport à ce que j'avais fait avant il faut également sortir de la case et recliquer dessus pour voir le message....

pijaku j'ai également testé la tienne, là le message s'affiche quand on sort de la cellule, donc c'est déjà mieux on n'a pas besoin de recliquer dessus, cependant le fait d'utiliser ActiveCell m'arrangeait beaucoup, car la liste déroulante OK/NOK je l'ai plein de fois dans ma feuille !

Donc là je ne sais pas trop comment procéder...
0
ori05 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour,
autant pour moi en fait j'avais laissé Worksheet_SelectionChange au lieu de mettre Worksheet_Change donc là effectivement ça marche. Michel_m toute mes excuses !
Merci encore
0