Send email en fonction du contenu d'une cellule

Fermé
Supsup Messages postés 12 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018 - 4 juil. 2018 à 17:30
Supsup Messages postés 12 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018 - 16 juil. 2018 à 09:15
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 !

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 4 juil. 2018 à 18:27
Bonjour,
changement cellules F/N
Set xRg = Intersect(Range("F:F,N:N"), Target)
1
Supsup Messages postés 12 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018
5 juil. 2018 à 09:23
Merci pour ta correction.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
4 juil. 2018 à 23:45
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 mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018
5 juil. 2018 à 09:25
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
5 juil. 2018 à 11:25
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 mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018
5 juil. 2018 à 10:12
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 5 juil. 2018 à 12:07
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 mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
5 juil. 2018 à 14:18
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 mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
5 juil. 2018 à 14:29
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
5 juil. 2018 à 15:01
et avec les balises HTML dans le code ligne 8 et
.HTMLBody = xMailBody
???
0
Supsup Messages postés 12 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 16 juillet 2018 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
5 juil. 2018 à 15:09
Je suis pas sûr de bien m'y prendre mais ça ne fonctionne pas. :/
0