Envoie d'un mail si "validé" dans colonne C

Y compris Power BI, Power Query et toute autre question en lien avec Excel
A
Arafac
Jeune membre
Jeune membre
Messages : 48
Inscrit le : 25 février 2019
Version d'Excel : 2019 FR

Message par Arafac » 20 septembre 2019, 17:40

Bonjour à tous,

Je vous expose mon souci. Je débute en VBA

Je vous explique en colonne A j'ai un numéro d'affaire, en colonne B le nom de l'affaire et en colonne C l'état (En cours, Stand by, Abandon, Perdu et Signé sous forme de validation de donnée par liste)

Pour info 1 ligne correspond à 1 affaire ^^

Je voudrais que lorsque l'état passe en "Signé" un mail soit envoyé automatiquement à mon directeur et moi même avec dans le mail, le numéro et le nom de l'affaire.
J'y suis presque!!!!! mais je sais pas comment adapter mon code, voici mon code:

Dans la feuille j'ai ça:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Offset(, 1).Value <= Date Then Call EnvoiMail
End Sub
et dans un module j'ai ça:
Sub EnvoiMail()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String


        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)


        strbody = "<font size=""3"" face=""Calibri"">" & _
                  "Bonjour,<br><br>" & _
                  "Le commercial<B> " & Cells(ActiveCell.Row, 3).Value & " </B> boby vient de signé le marché  XXX nommé XXX" & _
                  "<br><br>Cliquez sur ce lien pour ouvrir le fichier : " & _
                  "<A HREF=""file://\\:\AFFAIRES\10 PLANNING\" & Cells(ActiveCell.Row, 3).Value & "Fichier de gestion.xlsm" _
                  & """>ici</A>" & "<br><br>Cordialement," & _
                  "<br><br>L'Équipe de OUF</font>"


        With OutMail
            .To = "moi@moi.fr"
            .CC = ""
            .BCC = ""
            .Subject = "Affaire signé"
            .HTMLBody = strbody
            .Send
        End With
        On Error GoTo 0
        Set OutMail = Nothing
        Set OutApp = Nothing
End Sub
Seulement voila avec ce code il m'envoie un mail dés que je change l'état... alors que je veux seulement pour l'état "Signé"
Et j'aimerais aussi remplacer les XXX par le numéro de marché et les XXX par le nom du marché.

Pouvez vous me donner un coup de main svp car je galère à modifier le code à ma guise.

Merci d'avance et passez un bon week-end
Avatar du membre
Sequoyah
Membre habitué
Membre habitué
Messages : 74
Appréciations reçues : 3
Inscrit le : 25 juin 2017
Version d'Excel : Office 365 32 bit

Message par Sequoyah » 21 septembre 2019, 14:41

Bonjour Arafac, :)

Voici le code dans le module associé a la feuille:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ThisRow As Long
    
    If Target.Column = 3 Then
        ThisRow = Target.Row
        If Target.Value = "Signé" Then
            Call EnvoiMail
        End If
    End If
    
End Sub
et le code dans le module standard (à réviser ou à adapter la partie Cells(ActiveCell.Row, 3).Value - ça retourne toujours Signé donc il n'est pas nécessaire d'utiliser une variable ou une référence à la valeur). Pour l'envoi automatique sans afficher le message (une fois la phase de test terminée) on peut commenter la ligne de code '.Display et décommenter .Send:
Sub EnvoiMail()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim NumeroAff As String, NomAff As String

    NumeroAff = Cells(ActiveCell.Row, 1).Value
    NomAff = Cells(ActiveCell.Row, 2).Value
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    strbody = "<font size=""3"" face=""Calibri"">" & _
              "Bonjour,<br><br>" & _
              "Le commercial<B> " & Cells(ActiveCell.Row, 3).Value & " </B> boby vient de signer le marché " & NumeroAff & " nommé " & NomAff & _
              "<br><br>Cliquez sur ce lien pour ouvrir le fichier : " & _
              "<A HREF=""file://\\:\AFFAIRES\10 PLANNING\" & Cells(ActiveCell.Row, 3).Value & "Fichier de gestion.xlsm" _
            & """>ici</A>" & "<br><br>Cordialement," & _
              "<br><br>L                          'Équipe de OUF</font>"
    
    
    With OutMail
        .To = "moi@moi.fr"
        .CC = ""
        .BCC = ""
        .Subject = "Affaire signé"
        .HTMLBody = strbody
        '.Send
        .display
        
    End With
    On Error GoTo 0
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub
1 membre du forum aime ce message.
A
Arafac
Jeune membre
Jeune membre
Messages : 48
Inscrit le : 25 février 2019
Version d'Excel : 2019 FR

Message par Arafac » 24 septembre 2019, 12:02

Bonjour Sequoyah,

Merci beaucoup pour ton aide. J'ai adapté ton code comme cela (en espérant ne pas avoir fait de boulette lol) pour le moment ça fonctionne bien vu les premiers essaies effectués.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ThisRow As Long
    
    If Target.Column = 3 Then
        ThisRow = Target.Row
         If Target.Value = "Signé" Then
            Call EnvoiMail
        End If
    End If
    
End Sub
Sub EnvoiMail()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim NumeroAff As String, NomAff As String, MontAff As String, PourcentAff As String, MbAff As String

    NumeroAff = Cells(ActiveCell.Row, 1).Value
    NomAff = Cells(ActiveCell.Row, 2).Value
    MontAff = Cells(ActiveCell.Row, 24).Value
    PourcentAff = Cells(ActiveCell.Row, 26).Value
    MbAff = Cells(ActiveCell.Row, 27).Value
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    strbody = "<font size=""3"" face=""Calibri"">" & _
              "Bonjour,<br><br>" & _
              "Le commercial<B></B> boby vient de signer le marché " & NumeroAff & " nommé " & NomAff & " pour un montant de " & MontAff & "€ avec un coef de " & PourcentAff & " c'est à dire " & MbAff & "€ de marge brute. " & _
              "<br><br>Cliquez sur ce lien pour ouvrir le fichier : " & _
              "<A HREF=""file://\\:\AFFAIRES\10 PLANNING\" & Cells(ActiveCell.Row, 3).Value & "Fichier de gestion.xlsm" _
            & """>ici</A>" & "<br><br>Cordialement," & _
              "<br><br>L                          'Équipe </font>"
    
    
    With OutMail
        .To = "moi@moi.fr"
        .CC = ""
        .BCC = ""
        .Subject = "Affaire signé"
        .HTMLBody = strbody
        .Send
        
        
    End With
    On Error GoTo 0
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub
J'ai rajouter le montant du marché, le coéf et la marge brute généré. Bon par contre pour un marché de 2 millions ça m'écris 2000000 au lieu de 2 000 000 mais bon c'est du détail ça, le principal c'est qu'il y ai le même nombre de "0" mdrrr

Merci beaucoup en tout cas pour ton aide :mrgreen: :mrgreen:
Avatar du membre
Sequoyah
Membre habitué
Membre habitué
Messages : 74
Appréciations reçues : 3
Inscrit le : 25 juin 2017
Version d'Excel : Office 365 32 bit

Message par Sequoyah » 24 septembre 2019, 18:41

Salut Arafac, :)
merci pour ton retour.

change la ligne:
MontAff = Cells(ActiveCell.Row, 24).Value
avec
MontAff = Format(Cells(ActiveCell.Row, 24).Value, "Standard")
1 membre du forum aime ce message.
A
Arafac
Jeune membre
Jeune membre
Messages : 48
Inscrit le : 25 février 2019
Version d'Excel : 2019 FR

Message par Arafac » 25 septembre 2019, 16:31

Salut Sequoyah,

Super ta petite modification, c'été juste un détail d'affichage du mail mais ça fait toute la différence mdrrr :lol:

Merci pour ton aide en tout cas, tu gères et ça fonctionne du tonnerre. Je pense que sa pourra en aider d'autres aussi en plus, car c'est bien pratique cette petite alerte par mail automatique. :wink:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message