Send email en fonction du contenu d'une cellule

Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
Salut à tous,

Voilà, je gère actuellement un fichier de stock et en bref je souhaiterais que lorsque une cellule de mes colonnes F et N contiennent un chiffre qui est différend de 0, un envoi de mail automatique soit fait.

J'ai trouvé le code suivant sur le quel je me suis appuyé :

Dim xRg As Range
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Rows.Count = 0 Then Exit Sub
  Set xRg = Intersect(Range("F"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 0 Then
        Call Mail_small_Text_Outlook
    End If
End Sub
Sub Mail_small_Text_Outlook()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "xxx@xxx"
        .CC = ""
        .BCC = ""
        .Subject = "Commande à prévoir"
        .Body = "Test"
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub



Mais n'étant pas expert en codage il y a des fonctions que je n'arrive pas à utiliser correctement.

Voilà, toute aide sera la bienvenue !
A voir également:

3 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,
changement cellules F/N
Set xRg = Intersect(Range("F:F,N:N"), Target)
1
Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta correction.
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

« je souhaiterais que lorsque une cellule de mes colonnes F et N contiennent un chiffre qui est différend de 0, ... »
Attention, l'évènement Change se produit uniquement lors de la saisie d'une valeur, il ne se produit pas lors du changement du résultat d'une formule.
Dans ce cas,
- soit il faut surveiller les cellules qui entrent dans la définition des formules (les antécédents),
- soit il faut utiliser un autre évènement (de préférence Calculate), avec un risque de ralentir les calculs, et il faut mémoriser les valeurs précédentes avec un risque de mobiliser beaucoup de mémoire vive.

0
Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Effectivement je passe par une formule afin de définir le résultat de mes cellules en F et N.
Comme je l'ai dit précédemment je suis pas un expert en Excel/Programmation donc quand tu me parle d'évènement et de Calculate j'ai du mal à te suivre ^^".

Y a t-il une solution à mon problème du coup ?
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Oui, il faut modifier la ligne :
Set xRg = Intersect(Range("F"), Target)
un peu comme l'a proposé f894009 (que je salue ...) mais en surveillant le changement dans la ou les colonnes où sont saisies les données qui entraînent la modification du résultat des formules des colonnes F et N (sans les formules difficile d'être plus précis).
0
Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai une autre question également : comment fais-je pour insérer un lien réseau à l'intérieur de mon .Body ?
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Je n'utilise pas Outlook, mais je suppose qu'il faut utiliser .HTMLBody
avec les balises <A href=chemin du fichier>nom convivial</A>
0
Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention  
 
Je viens d'essayer avec ta balise, mais sans succès. Il me l'affiche tel quel dans le mail.
Pour l'instant je l'ai mis sous forme : file:///chemin_du_fichier mais ça fait moche dans le mail.

Si quelqu'un a une idée...
0
Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention  
 
Mon code est actuellement :

Sub Mail_small_Text_Outlook()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Bonjour," & vbNewLine & vbNewLine & _
              "Une commande est à prévoir pour certains articles, merci d'accéder au file:///chemin_du_fichier." & vbNewLine & vbNewLine & _
              "Cordialement."
    On Error Resume Next
    With xOutMail
        .To = "xxx@xxx.fr"
        .CC = "xxx@xxx.fr; xxx@xxx.fr"
        .BCC = ""
        .Subject = "Commande à prévoir"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
et avec les balises HTML dans le code ligne 8 et
.HTMLBody = xMailBody
???
0
Supsup Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention  
 
Je suis pas sûr de bien m'y prendre mais ça ne fonctionne pas. :/
0