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
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
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 .
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 .