Envoi email suivant ligne selectionné

Bonjour a tous,

Je me permets de vous contactez pour une aide concernant l'envoi d'email.

J'ai un fichier Excel regroupant des devis ( exemple ci-dessous)

A1B1C1D1E1F1
N°1DésignationNom documentFournisseurEmplacement du fichierA envoyer par Email
N°2tata1test1F1c:/ document/lien Email
N°3tata2test1F2c:/ document/lien Email

et je voudrais que dès l'appuie de la cellule "F1-N°1", un email se lance avec les données correspondants (B1,C1,D1 en corps de mail ) et que celle-ci soit automatique à chaque ligne sélectionner.

Quelqu'un peut-il m'aider?

Je vous remercie

Bonjour,

La première chose à connaître c'est la messagerie que vous utilisez

Cordialement

J'utilise Outlook

Bonjour

Le mieux est de sélectionner la cellule Fx, puis d'utiliser un bouton pour envoyer le mail car si vous cliquez par erreur dans la colonne F cela peut envoyer le mail alors que vous ne le vouliez pas....

Sur cette base et ne sachant pas vérifier (Je n'ai pas outlook) essayez ce code à placer dans un module dans l'éditeur VBA

Sub EnvoiMail()
Dim oMsgApp As Outlook.Application
Dim oMsg As Outlook.MailItem

Set oMsgApp = New Outlook.Application
Set oMsg = oMsgApp.CreateItem(olMailItem)

With oMsg
  .To = Range("F" & ActiveCell.Row) 'votre adresse mail
  .Subject = "Devis"
  .Body = "Veuillez trouver ci-joint le devis." & Chr(10) & Chr(13) & _
    Range("B" & ActiveCell.Row) & Chr(10) & Chr(13) & _
    Range("C" & ActiveCell.Row) & Chr(10) & Chr(13) & _
    Range("D" & ActiveCell.Row) & Chr(10) & Chr(13) & _
    "Bonne journée"
  .Send
End With

Set oMsgApp = Nothing
Set oMsg = Nothing
MsgBox "Mail envoyé"
End Sub

Ensuite créez un bouton et affecter le à cette macro (click droite sur le bouton et choisir "Affecter une macro" dans les options

Pour envoyer le devis, positionnez-vous sur la cellule de la colonne F, puis cliquez sur le bouton

Si ok et terminé pensez à cloturer le fil

Crdlt

Merci Dan pour ton retour.

j'ai reussi à trouvé une solution mais c'est au double clic.

L'action est au double clic de la cellule se trouvant à droite du tableau.

voici le code

Private Sub worksheet_beforedoubleclick(ByVal Target As Range, cancel As Boolean)

' déclaration des variables
Dim Text, Dossier, Fichier, PieceJoint As String
Dim NomDestinataire, NomSociété, DemandeType, NumDevis As String

' déclaration des données
NomDestinataire = ""
NomSociété = ActiveCell.Offset(0, -7).Value
DemandeType = ActiveCell.Offset(0, -5).Value
NumDevis = ActiveCell.Offset(0, -2).Value
Dossier = ThisWorkbook.Path & "\" & ActiveCell.Offset(0, -1).Value 'répertoire de l'éventuelle PJ
Fichier = NumDevis & ".pdf" 'nom de l'éventuelle PJ

PieceJoint = Dossier & Fichier

' code
If Not Intersect(Target, Range("L:L")) Is Nothing Then 'si la target se trouve en colonne D
    If Target.Offset(0, -1).Value <> "" Then 'si la cellule à gauche de la target est pas null

        Sujet = "[Envoi Devis] société: " & NomSociété & " Devis: " & NumDevis 'sujet reprenant la colonne "société" et la colonne " devis"

        Text = "Bonjour," & "<br><br>" & _
               "Vous trouverez en PJ le devis : " & "<B>" & NumDevis & "</B>" & "<br><br>" & _
               "de la société : " & "<B>" & NomSociété & "</B><br><br>" & _
               "concernant la: " & " <B> " & DemandeType & "</B><br><br>" & _
               "Cordialement" & "<br><br><br><br>" & _
               "<i><FONT size=2>" & " NB: Email envoyé en Automatique" & "</FONT><i>"

        Call EnvoyerEmail(NomDestinataire, Sujet, Text, PieceJoint) 'exécuter macro EnvoyerMail

    End If
End If

avec la fonction :

Sub EnvoyerEmail(ByVal Destinataire As String, ByVal Sujet As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String)

On Error GoTo EnvoyerEmailErreur

'définition des variables
Dim oOutlook As Outlook.Application
Dim oMailItem As Outlook.MailItem

    'vérification si le Contenu du mail n'est pas vide. Si oui, email n'est pas envoyé. Si vous voulez pouvoir envoyer les email vides, mettez en commentaire les 4 lignes de code qui suivent.
    If Len(ContenuEmail) = 0 Then
        MsgBox "Mail non envoyé car vide", vbOKOnly, "Message"
        Exit Sub
    End If

    'préparer Outlook
    PreparerOutlook oOutlook
    Set oMailItem = oOutlook.CreateItem(0)

    'création de l'email
    With oMailItem
        .To = Destinataire
        .Subject = Sujet

        'CHOIX DU FORMAT
        '----------------------
        'email formaté comme HTML (aussi par défaut)
            .BodyFormat = olFormatHTML
            .HTMLBody = "<html><p>" & ContenuEmail & "</p></html>"

        'OU

        'email formaté comme simple texte sans formats
            '.BodyFormat = olText
            '.Body = ContenuEmail

        'OU

        'email formaté comme texte riche (= avec formats)
            '.BodyFormat = olFormatRichText
            '.Body = ContenuEmail
        '----------------------

        If PieceJointe <> "" Then .Attachments.Add PieceJointe

       .Display   '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire)
       '.Save      '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire)
       '.Send      '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire)
    End With

   'nettoyage...
    If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
    If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

Exit Sub
EnvoyerEmailErreur:
    If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
    If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

    MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub

Private Sub PreparerOutlook(ByRef oOutlook As Object)

'------------------------------------------------------------------------------------------------
'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.
'------------------------------------------------------------------------------------------------

On Error Resume Next
    'vérification si Outlook est ouvert
    Set oOutlook = GetObject(, "Outlook.Application")

    If (Err.Number > 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
        Err.Clear
        Set oOutlook = CreateObject("Outlook.Application")

        If (Err.Number > 0) Then
            MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
            Exit Sub
        Else
        End If

    Else    'si Outlook est ouvert, l'instance existante est utilisée
    End If

End Sub

Bonjour,

C'est une manière différente (il suffisait d'appeler le Sub de Dan dans l'évènement beforedoubleclick) mais si cela vous a permis d'apprendre c'est aussi important. N'oubliez pas de clôturer votre post.

Re

Merci Dan pour ton retour.
j'ai reussi à trouvé une solution mais c'est au double clic.

Plus compliqué là ...
Comme sabok12617 me suit sur ce que j'ai posté, voyez sa réponse

Pensez à cloturer ...

Crdlt.

Rechercher des sujets similaires à "envoi email suivant ligne selectionne"