XL 2010 Problème macro qui se répète à chaque clic

Dylan67

XLDnaute Nouveau
Bonjour,

J'ai deux problèmes, premièrement je souhaiterais lancer une macro lorsque une des cellules dans la plage "v9:v200" est <= à 0, actuellement je n'arrive que a appliquer cette macro sur une cellule avec Range ("V9"), si je saisi Range ("v9:v200") l'erreur "incompatibilité de type" apparait.

Deuxièmement, lorsque la cellule v9 est <= à 0 la macro se lance mais le problème est la macro se lance à chaque clic sur une cellule.
Je souhaiterai que la macro ne se lance qu'une fois que la valeur passe de >0 à <=0.
Comment faire?

Merci d'avance.

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("v9") <= 0 Then
Call Mail
End If
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Un essai en utilisant l'évènement Calculate de la feuille "Feuil1" :

A chaque (re)calcul de Feuil1, on compte le nombre de valeurs négatives de la plage v9:v200:
  • si c'est différent de zéro et si on n'a pas déjà exécuté Mail alors on exécute mail et on passe l'indicateur MailExec à true.
  • si c'est différent de zéro et si on a déjà exécuté Mail, alors on ne fait rien
  • si c'est égal à zéro, on repasse simplement l'indicateur MailExec = false (ce qui implique qu'à la prochaine apparition d'une nouvelle valeur négative, on exécutera à nouveau Mail). On fait donc une espèce de "remise à zéro"
Code dans le module de la feuille "Feuil1" :
VB:
Option Explicit
Dim MailExec As Boolean

Private Sub Worksheet_Calculate()
Dim nbrNegatif&
   nbrNegatif = [countif(v9:v220,"<=0")]
   If nbrNegatif > 0 Then
      If Not MailExec Then
         mail
         MailExec = True
      End If
   Else
      MailExec = False
   End If
End Sub
 

Pièces jointes

  • Dylan67- Mail si- v1.xlsm
    20.2 KB · Affichages: 1

Dylan67

XLDnaute Nouveau
Re,

Un essai en utilisant l'évènement Calculate de la feuille "Feuil1" :

A chaque (re)calcul de Feuil1, on compte le nombre de valeurs négatives de la plage v9:v200:
  • si c'est différent de zéro et si on n'a pas déjà exécuté Mail alors on exécute mail et on passe l'indicateur MailExec à true.
  • si c'est différent de zéro et si on a déjà exécuté Mail, alors on ne fait rien
  • si c'est égal à zéro, on repasse simplement l'indicateur MailExec = false (ce qui implique qu'à la prochaine apparition d'une nouvelle valeur négative, on exécutera à nouveau Mail). On fait donc une espèce de "remise à zéro"
Code dans le module de la feuille "Feuil1" :
VB:
Option Explicit
Dim MailExec As Boolean

Private Sub Worksheet_Calculate()
Dim nbrNegatif&
   nbrNegatif = [countif(v9:v220,"<=0")]
   If nbrNegatif > 0 Then
      If Not MailExec Then
         mail
         MailExec = True
      End If
   Else
      MailExec = False
   End If
End Sub
Merci pour ton aide, par contre ça marche pour qu'une seul ligne par exemple si V10= 0 la macro se lance mais par contre si ensuite V19= -1 la macro ne se lance plus.

Je voudrais qu'à chaque fois qu'une des valeurs passent à 0 ou < 0 le mail soit envoyé.
Pour te donner un peu le contexte je prépare une gestion de stock et cette macro serait pour envoyer une alerte par mail lorsque le stock descend sous le stock minimum .
 

Dylan67

XLDnaute Nouveau
Merci pour ton aide, par contre ça marche pour qu'une seul ligne par exemple si V10= 0 la macro se lance mais par contre si ensuite V19= -1 la macro ne se lance plus.

Je voudrais qu'à chaque fois qu'une des valeurs passent à 0 ou < 0 le mail soit envoyé.
Pour te donner un peu le contexte je prépare une gestion de stock et cette macro serait pour envoyer une alerte par mail lorsque le stock descend sous le stock minimum .
Ci-joint le fichier
 

Pièces jointes

  • Stock.xlsm
    210.3 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
315 089
Messages
2 116 098
Membres
112 661
dernier inscrit
ceucri