OVH Cloud OVH Cloud

Macro alerte !

12 réponses
Avatar
ELDER
Bonjour à tous,

Je souhaiterais créer une macro qui enverrais un mail automatiquement
lorsque le résultat d'une cellule devient supérieur à10%. En langage excel
cela donne :

SI A1 supérieur à 10% envoie mail.

Seulement ça je sais le faire avec la commande SENDMAIL mais il faut que
l'envoi ne se fasse qu'une fois. La macro se met ensuite en veille pour se
réenclencher si la valeur repasse de nouveau les 10% ( a la limite renvoi
d'un mail pour indiquer le passage sous les 10% ). Dans le cas ou la valeur
repasse au dessus des 10% renvoi d'un mail. L'autre problème c'est que le
fichier est ouvert est fermé plusieurs fois par jour ( pour mettre à jour
les liaisons" il faut donc éviter l'envoie du mail à chaque ouverture.

En gros

A1 supérieur à 10% ----> envoi d'un mail
blocage de la macro tant que la valeur et au dessus de 10%, même si le
fichier est fermé puis réouvert ( pour éviter l'envoie du mail d'alerte 10
fois de suite)

A1 inférieur à 10% -----> envoi d'un autre mail
et remise en fonction de l'alerte +10%


Ca à l'air compliqué ( surtout pour mois qui débute ) mais je suppose qu'il
y a une solution.

Merci

10 réponses

1 2
Avatar
Nicolas B.
Salut,

Tu peux rajouter une colonne Etat où tu incris (par la macro bien sûr)
"envoyé" lorsque le taux est supérieur à 10 %.

La macro doit alors vérifier que la cellule est supérieure à 10 % ET que la
cellule Etat est vide. Si c'est le cas elle envoie le message et inscrit
"envoyé".

De plus si lors du parcours de la plage de cellules la macro remarque que le
taux est inférieur à 10 % et que "envoyé" est dans la cellule à côté, la
macro doit supprimer "envoyé".


Exemple :
La cellule Etat est vide et le taux est inférieur à 10 %.
Lors de l'exécution il ne se passe donc rien.

Le taux dépasse alors 10 %. La macro envoie l'e-mail et note "envoyé" dans
la cellule Etat.

Le taux reste supérieur à 10 %.
Comme "envoyé" est inscrit, il ne se passe rien.

Le taux descend en-dessous de 10 %.
La macro repère ce cas et supprime la mention "envoyé". On se retrouve au
point de départ.


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour à tous,

Je souhaiterais créer une macro qui enverrais un mail automatiquement
lorsque le résultat d'une cellule devient supérieur à10%. En langage
excel cela donne :

SI A1 supérieur à 10% envoie mail.

Seulement ça je sais le faire avec la commande SENDMAIL mais il faut
que l'envoi ne se fasse qu'une fois. La macro se met ensuite en
veille pour se réenclencher si la valeur repasse de nouveau les 10% (
a la limite renvoi d'un mail pour indiquer le passage sous les 10% ).
Dans le cas ou la valeur repasse au dessus des 10% renvoi d'un mail.
L'autre problème c'est que le fichier est ouvert est fermé plusieurs
fois par jour ( pour mettre à jour les liaisons" il faut donc éviter
l'envoie du mail à chaque ouverture.

En gros

A1 supérieur à 10% ----> envoi d'un mail
blocage de la macro tant que la valeur et au dessus de 10%, même si le
fichier est fermé puis réouvert ( pour éviter l'envoie du mail
d'alerte 10 fois de suite)

A1 inférieur à 10% -----> envoi d'un autre mail
et remise en fonction de l'alerte +10%


Ca à l'air compliqué ( surtout pour mois qui débute ) mais je suppose
qu'il y a une solution.

Merci


Avatar
ELDER
C'est un bon point de départ et je pense utiliser cette piste. Comment faire
pour une une condition à une macro du style si A2 = envoyé alors ne pas
envoyé ? et inversement pour écrire envoyé en A2 ?

Merci
"Nicolas B." a écrit dans le message de
news:
Salut,

Tu peux rajouter une colonne Etat où tu incris (par la macro bien sûr)
"envoyé" lorsque le taux est supérieur à 10 %.

La macro doit alors vérifier que la cellule est supérieure à 10 % ET que
la

cellule Etat est vide. Si c'est le cas elle envoie le message et inscrit
"envoyé".

De plus si lors du parcours de la plage de cellules la macro remarque que
le

taux est inférieur à 10 % et que "envoyé" est dans la cellule à côté, la
macro doit supprimer "envoyé".


Exemple :
La cellule Etat est vide et le taux est inférieur à 10 %.
Lors de l'exécution il ne se passe donc rien.

Le taux dépasse alors 10 %. La macro envoie l'e-mail et note "envoyé" dans
la cellule Etat.

Le taux reste supérieur à 10 %.
Comme "envoyé" est inscrit, il ne se passe rien.

Le taux descend en-dessous de 10 %.
La macro repère ce cas et supprime la mention "envoyé". On se retrouve au
point de départ.


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour à tous,

Je souhaiterais créer une macro qui enverrais un mail automatiquement
lorsque le résultat d'une cellule devient supérieur à10%. En langage
excel cela donne :

SI A1 supérieur à 10% envoie mail.

Seulement ça je sais le faire avec la commande SENDMAIL mais il faut
que l'envoi ne se fasse qu'une fois. La macro se met ensuite en
veille pour se réenclencher si la valeur repasse de nouveau les 10% (
a la limite renvoi d'un mail pour indiquer le passage sous les 10% ).
Dans le cas ou la valeur repasse au dessus des 10% renvoi d'un mail.
L'autre problème c'est que le fichier est ouvert est fermé plusieurs
fois par jour ( pour mettre à jour les liaisons" il faut donc éviter
l'envoie du mail à chaque ouverture.

En gros

A1 supérieur à 10% ----> envoi d'un mail
blocage de la macro tant que la valeur et au dessus de 10%, même si le
fichier est fermé puis réouvert ( pour éviter l'envoie du mail
d'alerte 10 fois de suite)

A1 inférieur à 10% -----> envoi d'un autre mail
et remise en fonction de l'alerte +10%


Ca à l'air compliqué ( surtout pour mois qui débute ) mais je suppose
qu'il y a une solution.

Merci






Avatar
Nicolas B.
Voici à quoi la macro devrait ressembler (pas testé) :

sub Envois()
dim Ligne as long

for Ligne=1 to 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
if cells(Ligne,1)>=0.1 and cells(Ligne,2)<>"Envoyé" then
'mets là ton code pour envoyer le message
cells(Ligne,2)="Envoyé"
endif
if cells(Ligne,1)<0.1 and cells(Ligne,2)<>"Envoyé" then
cells(Ligne,2)=""
endif
next
end sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


C'est un bon point de départ et je pense utiliser cette piste.
Comment faire pour une une condition à une macro du style si A2 > envoyé alors ne pas envoyé ? et inversement pour écrire envoyé en A2 ?

Merci


Avatar
ELDER
Merci Nicolas, je teste ce soir et je te tiens au courant !!!


"Nicolas B." a écrit dans le message de
news:OzG$
Voici à quoi la macro devrait ressembler (pas testé) :

sub Envois()
dim Ligne as long

for Ligne=1 to 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
if cells(Ligne,1)>=0.1 and cells(Ligne,2)<>"Envoyé" then
'mets là ton code pour envoyer le message
cells(Ligne,2)="Envoyé"
endif
if cells(Ligne,1)<0.1 and cells(Ligne,2)<>"Envoyé" then
cells(Ligne,2)=""
endif
next
end sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


C'est un bon point de départ et je pense utiliser cette piste.
Comment faire pour une une condition à une macro du style si A2 > > envoyé alors ne pas envoyé ? et inversement pour écrire envoyé en A2 ?

Merci






Avatar
ELDER
Bonjour,

Bon j'ai commencé la macro que tu m'as fais mais quelque chose cloche. Tu
met un programma qui test des lignes il faudrait plus un programme qui teste
des cellules car je sais exactement ou se situe le pourcentage et ou je doit
mettre "envoyé". Forcément comme je sis pas expert, j'ai un petit peu de mal
!

Regarde si tu as deux minutes la modification qu'il est possible de faire.
Cela me rendrait bien service.

Sub alerte()
Dim Ligne As Long

'For Ligne = 1 To 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
If I23 >= 0.1 And K32 <> "Envoyé" Then
ActiveWorkbook.SendMail Recipients:="", Subject:="Alerte
sur le pourcentage " & xfichier & " "
'mets là ton code pour envoyer le message
K32 = "Envoyé"
End If
If I23 < 0.1 And K32 <> "Envoyé" Then
End If
Next


"ELDER" a écrit dans le message de
news:bpgdb8$e$
Merci Nicolas, je teste ce soir et je te tiens au courant !!!


"Nicolas B." a écrit dans le message de
news:OzG$
Voici à quoi la macro devrait ressembler (pas testé) :

sub Envois()
dim Ligne as long

for Ligne=1 to 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
if cells(Ligne,1)>=0.1 and cells(Ligne,2)<>"Envoyé" then
'mets là ton code pour envoyer le message
cells(Ligne,2)="Envoyé"
endif
if cells(Ligne,1)<0.1 and cells(Ligne,2)<>"Envoyé" then
cells(Ligne,2)=""
endif
next
end sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


C'est un bon point de départ et je pense utiliser cette piste.
Comment faire pour une une condition à une macro du style si A2 > > > envoyé alors ne pas envoyé ? et inversement pour écrire envoyé en A2 ?

Merci










Avatar
Nicolas B.
Y'a-t-il un pourcentage par ligne (et donc une cellule Etat par ligne), ou
seulement en I23 (et K42 pour le test d'envoi) ?
Avec I23 et K42 le pourcentage et la cellule "envyé" correspondante ne sont
pas sur la même ligne. Est-ce le cas pour toutes les occurences ?

Précise un peu tes plages de cellules, car je ne comprends pas les
modification que tu as apportées


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour,

Bon j'ai commencé la macro que tu m'as fais mais quelque chose
cloche. Tu met un programma qui test des lignes il faudrait plus un
programme qui teste des cellules car je sais exactement ou se situe
le pourcentage et ou je doit mettre "envoyé". Forcément comme je sis
pas expert, j'ai un petit peu de mal !

Regarde si tu as deux minutes la modification qu'il est possible de
faire. Cela me rendrait bien service.

Sub alerte()
Dim Ligne As Long

'For Ligne = 1 To 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
If I23 >= 0.1 And K32 <> "Envoyé" Then
ActiveWorkbook.SendMail Recipients:="",
Subject:="Alerte sur le pourcentage " & xfichier & " "
'mets là ton code pour envoyer le message
K32 = "Envoyé"
End If
If I23 < 0.1 And K32 <> "Envoyé" Then
End If
Next


"ELDER" a écrit dans le message de
news:bpgdb8$e$
Merci Nicolas, je teste ce soir et je te tiens au courant !!!


"Nicolas B." a écrit dans le
message de news:OzG$
Voici à quoi la macro devrait ressembler (pas testé) :

sub Envois()
dim Ligne as long

for Ligne=1 to 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
if cells(Ligne,1)>=0.1 and cells(Ligne,2)<>"Envoyé" then
'mets là ton code pour envoyer le message
cells(Ligne,2)="Envoyé"
endif
if cells(Ligne,1)<0.1 and cells(Ligne,2)<>"Envoyé" then
cells(Ligne,2)=""
endif
next
end sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC







Avatar
ELDER
J'ai mis le fichier devant mes yeux pour te guider.

En I23 j'ai un calcul en pourcentage qui donne. Ce chiffre varie en fonction
de divers paramètre. quand c'est bon le chiffre est inférieur à 10%. au delà
je souhaite qu'une alerte soit lancer pour prévenir les personnes concerné
par ce chiffre en envoyant un mail.

Comme le fichier est ouvert et fermé plusieurs fois par jour pour mettre à
jour des liaisons il faut que la macro qui envoi le mail sache qu'un mail a
déjà été envoyé pour éviter que le destinataire ne reçoivent pas 20 mail
d'alerte dans la journée !!

Ton idée de noter dans un coin de la feuille " mail envoyé" est une bonne
idée. On défini donc dans la macro que "mail envoyé" sera noté en J9

donc si I23 supérieur à 10 % envoi d'un mail et inscription "mail envoyé" en
J9.

2ème problème

Si I23 redescend en dessous de 10% envoi d'un mail de fin d'alerte et
suppression de " mail envoyé" en J9 de façon a ce que si I23 repasse au
dessus de 10% le processus se répète.


Là je pense avoir été assez clair ;-).

Merci de te donner autant de mal pour moi mais je pense que cette macro
pourrais servir à d'autre !

Amicalement



"Nicolas B." a écrit dans le message de
news:%
Y'a-t-il un pourcentage par ligne (et donc une cellule Etat par ligne), ou
seulement en I23 (et K42 pour le test d'envoi) ?
Avec I23 et K42 le pourcentage et la cellule "envyé" correspondante ne
sont

pas sur la même ligne. Est-ce le cas pour toutes les occurences ?

Précise un peu tes plages de cellules, car je ne comprends pas les
modification que tu as apportées


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour,

Bon j'ai commencé la macro que tu m'as fais mais quelque chose
cloche. Tu met un programma qui test des lignes il faudrait plus un
programme qui teste des cellules car je sais exactement ou se situe
le pourcentage et ou je doit mettre "envoyé". Forcément comme je sis
pas expert, j'ai un petit peu de mal !

Regarde si tu as deux minutes la modification qu'il est possible de
faire. Cela me rendrait bien service.

Sub alerte()
Dim Ligne As Long

'For Ligne = 1 To 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
If I23 >= 0.1 And K32 <> "Envoyé" Then
ActiveWorkbook.SendMail Recipients:="",
Subject:="Alerte sur le pourcentage " & xfichier & " "
'mets là ton code pour envoyer le message
K32 = "Envoyé"
End If
If I23 < 0.1 And K32 <> "Envoyé" Then
End If
Next


"ELDER" a écrit dans le message de
news:bpgdb8$e$
Merci Nicolas, je teste ce soir et je te tiens au courant !!!


"Nicolas B." a écrit dans le
message de news:OzG$
Voici à quoi la macro devrait ressembler (pas testé) :

sub Envois()
dim Ligne as long

for Ligne=1 to 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
if cells(Ligne,1)>=0.1 and cells(Ligne,2)<>"Envoyé" then
'mets là ton code pour envoyer le message
cells(Ligne,2)="Envoyé"
endif
if cells(Ligne,1)<0.1 and cells(Ligne,2)<>"Envoyé" then
cells(Ligne,2)=""
endif
next
end sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC











Avatar
Nicolas B.
Si j'ai bien compris, il ne faut effectuer qu'une fois le test (pour I23 et
J9), mais il faut envoyer le mail à une liste d'utilisateurs (on va dire que
les adresses sont en A2:A50) :

sub Envois()
if [I23]>=0.1 and [J9]<>"mail envoyé" then
for Ligne=2 to 50
ActiveWorkbook.SendMail Recipients:Îlls(Ligne,1), Subject:="Alerte
sur le pourcentage " & xfichier & " "
'pour l'envoi du mail j'espère que tu n'avais pas de problèmes,
'j'ai fais copier-coller...
next
endif
if [I23]<0.1 and [J9]="mail envoyé" then
[J9]=""
for Ligne=2 to 50
ActiveWorkbook.SendMail Recipients:Îlls(Ligne,1), Subject:="Fin d'alerte"
& xfichier & " "
next
endif
end sub

Teste ça. Si ta plage d'adresses n'est pas fixe, il faudra modifier un peu
le code pour éviter des bugs.


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


J'ai mis le fichier devant mes yeux pour te guider.

En I23 j'ai un calcul en pourcentage qui donne. Ce chiffre varie en
fonction de divers paramètre. quand c'est bon le chiffre est
inférieur à 10%. au delà je souhaite qu'une alerte soit lancer pour
prévenir les personnes concerné par ce chiffre en envoyant un mail.

Comme le fichier est ouvert et fermé plusieurs fois par jour pour
mettre à jour des liaisons il faut que la macro qui envoi le mail
sache qu'un mail a déjà été envoyé pour éviter que le destinataire ne
reçoivent pas 20 mail d'alerte dans la journée !!

Ton idée de noter dans un coin de la feuille " mail envoyé" est une
bonne idée. On défini donc dans la macro que "mail envoyé" sera noté
en J9

donc si I23 supérieur à 10 % envoi d'un mail et inscription "mail
envoyé" en J9.

2ème problème

Si I23 redescend en dessous de 10% envoi d'un mail de fin d'alerte et
suppression de " mail envoyé" en J9 de façon a ce que si I23 repasse
au dessus de 10% le processus se répète.


Là je pense avoir été assez clair ;-).

Merci de te donner autant de mal pour moi mais je pense que cette
macro pourrais servir à d'autre !

Amicalement



"Nicolas B." a écrit dans le
message de news:%
Y'a-t-il un pourcentage par ligne (et donc une cellule Etat par
ligne), ou seulement en I23 (et K42 pour le test d'envoi) ?
Avec I23 et K42 le pourcentage et la cellule "envyé" correspondante
ne sont pas sur la même ligne. Est-ce le cas pour toutes les
occurences ?

Précise un peu tes plages de cellules, car je ne comprends pas les
modification que tu as apportées


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour,

Bon j'ai commencé la macro que tu m'as fais mais quelque chose
cloche. Tu met un programma qui test des lignes il faudrait plus un
programme qui teste des cellules car je sais exactement ou se situe
le pourcentage et ou je doit mettre "envoyé". Forcément comme je sis
pas expert, j'ai un petit peu de mal !

Regarde si tu as deux minutes la modification qu'il est possible de
faire. Cela me rendrait bien service.

Sub alerte()
Dim Ligne As Long

'For Ligne = 1 To 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
If I23 >= 0.1 And K32 <> "Envoyé" Then
ActiveWorkbook.SendMail Recipients:="",
Subject:="Alerte sur le pourcentage " & xfichier & " "
'mets là ton code pour envoyer le message
K32 = "Envoyé"
End If
If I23 < 0.1 And K32 <> "Envoyé" Then
End If
Next


"ELDER" a écrit dans le message de
news:bpgdb8$e$
Merci Nicolas, je teste ce soir et je te tiens au courant !!!


"Nicolas B." a écrit dans le
message de news:OzG$
Voici à quoi la macro devrait ressembler (pas testé) :

sub Envois()
dim Ligne as long

for Ligne=1 to 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
if cells(Ligne,1)>=0.1 and cells(Ligne,2)<>"Envoyé" then
'mets là ton code pour envoyer le message
cells(Ligne,2)="Envoyé"
endif
if cells(Ligne,1)<0.1 and cells(Ligne,2)<>"Envoyé" then
cells(Ligne,2)=""
endif
next
end sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC










Avatar
ELDER
Bonjour Nicolas,

J'ai lancé la macro et j'ai une boucle, excel ne me rends pas la main et
envoi quantité de message. Comme je n'y connaît pas grand chose je voudrais
aussi que cette macro soit active au démarrage (enfin quand le problème de
boucle sera réglé ) sur les feuilles 1 à 10.

Pour la liste d'adresse, il n'y a pas besoin de les déclaré, s'il y en a
plusieurs c'est juste avec une fonction Array qu'on règle le problème (
ligne Sendmail )

Voilà la macro rentré sur excel ( sauf l'adresse mail ;-) ):

Sub Alerte()
' il faudrait que la macro soit active sur les feuilles 1 à 10
' je ne sais pas activer une macro sur tel ou tel feuille
If [I23] >= 0.1 And [J9] <> "mail envoyé" Then
For Ligne = 2 To 50 ' je pense que c'est là que ça ne va pas
xfichier = [B2] 'donne un nom dans le sujet du mail
ActiveSheet.SendMail Recipients:="", Subject:=" Alerte " &
xfichier & " "
'l'envoie du mail se fait avec l'adresse à coté de Recipients
Next
End If
If [I23] < 0.1 And [J9] = "mail envoyé" Then
[J9] = ""
For Ligne = 2 To 50
ActiveWorkbook.SendMail Recipients:Îlls(Ligne, 1), Subject:="Fin d'alerte
" & xfichier & " "
Next
End If
End Sub

Le test doit être fait non pas une fois mais tout le temps, c'est l'envoie
du mail qui doit être fait une seul fois ( pour éviter de remplir la BAL du
destinataire) Parceque le fichier est ouvert 20h par jour mais le chiffre en
I23 varie plusieurs fois par jour.

Voilà on en est là ! Merci pour ta patience



"Nicolas B." a écrit dans le message de
news:
Si j'ai bien compris, il ne faut effectuer qu'une fois le test (pour I23
et

J9), mais il faut envoyer le mail à une liste d'utilisateurs (on va dire
que

les adresses sont en A2:A50) :

sub Envois()
if [I23]>=0.1 and [J9]<>"mail envoyé" then
for Ligne=2 to 50
ActiveWorkbook.SendMail Recipients:Îlls(Ligne,1), Subject:="Alerte
sur le pourcentage " & xfichier & " "
'pour l'envoi du mail j'espère que tu n'avais pas de problèmes,
'j'ai fais copier-coller...
next
endif
if [I23]<0.1 and [J9]="mail envoyé" then
[J9]=""
for Ligne=2 to 50
ActiveWorkbook.SendMail Recipients:Îlls(Ligne,1), Subject:="Fin
d'alerte"

& xfichier & " "
next
endif
end sub

Teste ça. Si ta plage d'adresses n'est pas fixe, il faudra modifier un peu
le code pour éviter des bugs.


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


J'ai mis le fichier devant mes yeux pour te guider.

En I23 j'ai un calcul en pourcentage qui donne. Ce chiffre varie en
fonction de divers paramètre. quand c'est bon le chiffre est
inférieur à 10%. au delà je souhaite qu'une alerte soit lancer pour
prévenir les personnes concerné par ce chiffre en envoyant un mail.

Comme le fichier est ouvert et fermé plusieurs fois par jour pour
mettre à jour des liaisons il faut que la macro qui envoi le mail
sache qu'un mail a déjà été envoyé pour éviter que le destinataire ne
reçoivent pas 20 mail d'alerte dans la journée !!

Ton idée de noter dans un coin de la feuille " mail envoyé" est une
bonne idée. On défini donc dans la macro que "mail envoyé" sera noté
en J9

donc si I23 supérieur à 10 % envoi d'un mail et inscription "mail
envoyé" en J9.

2ème problème

Si I23 redescend en dessous de 10% envoi d'un mail de fin d'alerte et
suppression de " mail envoyé" en J9 de façon a ce que si I23 repasse
au dessus de 10% le processus se répète.


Là je pense avoir été assez clair ;-).

Merci de te donner autant de mal pour moi mais je pense que cette
macro pourrais servir à d'autre !

Amicalement



"Nicolas B." a écrit dans le
message de news:%
Y'a-t-il un pourcentage par ligne (et donc une cellule Etat par
ligne), ou seulement en I23 (et K42 pour le test d'envoi) ?
Avec I23 et K42 le pourcentage et la cellule "envyé" correspondante
ne sont pas sur la même ligne. Est-ce le cas pour toutes les
occurences ?

Précise un peu tes plages de cellules, car je ne comprends pas les
modification que tu as apportées


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour,

Bon j'ai commencé la macro que tu m'as fais mais quelque chose
cloche. Tu met un programma qui test des lignes il faudrait plus un
programme qui teste des cellules car je sais exactement ou se situe
le pourcentage et ou je doit mettre "envoyé". Forcément comme je sis
pas expert, j'ai un petit peu de mal !

Regarde si tu as deux minutes la modification qu'il est possible de
faire. Cela me rendrait bien service.

Sub alerte()
Dim Ligne As Long

'For Ligne = 1 To 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
If I23 >= 0.1 And K32 <> "Envoyé" Then
ActiveWorkbook.SendMail Recipients:="",
Subject:="Alerte sur le pourcentage " & xfichier & " "
'mets là ton code pour envoyer le message
K32 = "Envoyé"
End If
If I23 < 0.1 And K32 <> "Envoyé" Then
End If
Next


"ELDER" a écrit dans le message de
news:bpgdb8$e$
Merci Nicolas, je teste ce soir et je te tiens au courant !!!


"Nicolas B." a écrit dans le
message de news:OzG$
Voici à quoi la macro devrait ressembler (pas testé) :

sub Envois()
dim Ligne as long

for Ligne=1 to 50 'si tu veux tester les lignes de 1 à 50
'pour la suite je considère que tes pourcentages sont en col A
'et l'état en col B
if cells(Ligne,1)>=0.1 and cells(Ligne,2)<>"Envoyé" then
'mets là ton code pour envoyer le message
cells(Ligne,2)="Envoyé"
endif
if cells(Ligne,1)<0.1 and cells(Ligne,2)<>"Envoyé" then
cells(Ligne,2)=""
endif
next
end sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC














Avatar
Nicolas B.
Essaye ceci (attention aux retours à la ligne) :

Sub Alerte()

Dim i As Integer

For i = 1 To 10 'Si les feuilles à tester sont les dix premières
xfichier = Sheets(i).[B2]
If Sheets(i).[I23] >= 0.1 And Sheets(i).[J9] <> "mail envoyé" Then
ActiveWorkbook.SendMail Recipients:="", Subject:="Alerte
" & xfichier
Sheets(i).[J9] = "mail envoyé"
End If
If Sheets(i).[I23] < 0.1 And Sheets(i).[J9] = "mail envoyé" Then
ActiveWorkbook.SendMail Recipients:="", Subject:="Fin
d'alerte " & xfichier
Sheets(i).[J9] = ""
End If
Next

End Sub

Dans cette macro, il n'y a qu'un seul destinataire (dans le cas de yoyo),
mais qui peut recevoir plusieurs alertes (une alerte par feuille au
maximum).
Chez moi, ActiveSheet.SendMail plante, alors j'ai remplacé par
ActiveWorkbook, mais il y a un message de confirmation d'envoi d'Outlook que
je n'arrive pas à supprimer.

Pour lancer la macro à chaque modification dans une feuille, va dans
ThisWorkbook (dans la fenêtre de l'explorateur de projets) et colle ta macro
en la nommant comme suit :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Place ici le code de la macro
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour Nicolas,

J'ai lancé la macro et j'ai une boucle, excel ne me rends pas la main
et envoi quantité de message. Comme je n'y connaît pas grand chose je
voudrais aussi que cette macro soit active au démarrage (enfin quand
le problème de boucle sera réglé ) sur les feuilles 1 à 10.

Pour la liste d'adresse, il n'y a pas besoin de les déclaré, s'il y
en a plusieurs c'est juste avec une fonction Array qu'on règle le
problème ( ligne Sendmail )

Voilà la macro rentré sur excel ( sauf l'adresse mail ;-) ):

Sub Alerte()
' il faudrait que la macro soit active sur les feuilles 1 à 10
' je ne sais pas activer une macro sur tel ou tel feuille
If [I23] >= 0.1 And [J9] <> "mail envoyé" Then
For Ligne = 2 To 50 ' je pense que c'est là que ça ne va pas
xfichier = [B2] 'donne un nom dans le sujet du mail
ActiveSheet.SendMail Recipients:="", Subject:=" Alerte " &
xfichier & " "
'l'envoie du mail se fait avec l'adresse à coté de Recipients
Next
End If
If [I23] < 0.1 And [J9] = "mail envoyé" Then
[J9] = ""
For Ligne = 2 To 50
ActiveWorkbook.SendMail Recipients:Îlls(Ligne, 1), Subject:="Fin
d'alerte " & xfichier & " "
Next
End If
End Sub

Le test doit être fait non pas une fois mais tout le temps, c'est
l'envoie du mail qui doit être fait une seul fois ( pour éviter de
remplir la BAL du destinataire) Parceque le fichier est ouvert 20h
par jour mais le chiffre en I23 varie plusieurs fois par jour.

Voilà on en est là ! Merci pour ta patience



1 2