Envoi mail cdo

papy 73 ans

XLDnaute Occasionnel
Bonjour
J'ai réussi à m'inscrire et je met le fichier concernant ma demande.
Problème à .Send
Il faudrait si Pièce jointe = Oui en "M2" que le chemin du fichier à joindre se mette en "L4"
Merci à Staple
 

Pièces jointes

  • Classeur mail.xls
    94 KB · Affichages: 33
Dernière édition:

Calvus

XLDnaute Barbatruc
Bonjour Papy et bienvenue sur le forum,

Ton code fonctionne.
Seulement tu as un problème de fusion des cellules.
Il faut vraiment se méfier de la fusion des cellules dans Excel. Tu verras cela sur de nombreux topics.
Dé-fusionne ta cellule L4 et tout devrait rentrer dans l'ordre.

A bientôt.
 
Dernière édition:

papy 73 ans

XLDnaute Occasionnel
Bonjour Calvus et merci de t'intéresser à ma demande.
J'ai dé-fusionner L4 comme tu me l'indique, mais ce que je souhaiterai c'est que en M2, lorsque Oui est sélectionné ça ouvre une boîte de dialogue pour rechercher le fichier à envoyer et que le chemin se mette en L4
L4 est nommé : Fichier

ps : Il peut y avoir plusieurs fichiers comment faire alors ?

J'ai trouvé ce code mais je ne sais pas l'adapter à la macro Envoi_Mail
 
Dernière édition:

Calvus

XLDnaute Barbatruc
Re,

Alors dans ce cas, comme ceci :
VB:
Sub Envoi_Mail()
' On Error Resume Next
' Touche de raccourci du clavier : Ctrl+e
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim PJ As String        'Piece-Jointe=OUI/NON
'    Dim List_To As String, List_Cop As String

' ici je repère la dernière ligne vide pour la Collection des données
Dim List_To As String, List_Cop As String, rng As Range, t, tt
' UF_Attente.Show vbModeless
' ici je repère la dernière ligne vide pour la Collection des données
' ici- dessous début des lignes modifiées
With Worksheets("Mail")
        Set rng = .Range(.Cells(2, "N"), .Cells(Rows.Count, "N").End(3))
        If rng.Rows.Count > 2 Then
        t = Application.Transpose(rng.Value): List_To = Join(t, ";")
        tt = Application.Transpose(rng.Offset(, 1)): List_Cop = Join(tt, ";")
' pour tester le contenu des listes de mails
        Else
        MsgBox "Attention : Vous n'avez pas de destinataire !"
        Exit Sub
        End If
End With
' fin des lignes modifiées

' Set OutApp = CreateObject("Outlook.Application")

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

'Application.Dialogs(xlDialogOpen).Show (chemin)
'Selection = fichier

    With Worksheets("Mail")
        PJ = .Range("M2")
        Sujet = .Range("J3")
        strbody = .Shapes("CorpsMessage").TextFrame.Characters.Text & vbTab 'str
       
    End With
    With OutMail
        .To = List_To
        .CC = List_Cop
        .BCC = ""
        .Subject = Sujet
        .Body = strbody
' You can add a file like this
        If UCase(PJ) = "OUI" Then
                Dim fichier As Variant
                fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
            .Attachments.Add (fichier)      'mettre ce que vous voulez
        End If
         .Display
' or use
        .Send
    End With
' attente envoi @Mail
' Application.Wait Application.Wait(Now + TimeValue("0:00:01"))
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Bonne soirée
 

papy 73 ans

XLDnaute Occasionnel
Bonjour Calvus,
Peux tu regarder la sub a et me dire pourquoi l'ensemble du CorpsMessage n'y figure pas.
D'autre part, je ne veux pas passer par outlook.
en te remerciant

édit : peut être ce fichier est-il plus adapté... mais fonctionne pas
 

Pièces jointes

  • Classeur mail CDO.xls
    74.5 KB · Affichages: 23
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re


Je peux pas tester la méthode CDO sur mon PC.

Mais le code de Calvus te permets déjà d'ouvrir une boite de dialogue
' You can add a file like this
If UCase(PJ) = "OUI" Then
Dim fichier As Variant
fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
 

Discussions similaires

Statistiques des forums

Discussions
312 087
Messages
2 085 198
Membres
102 815
dernier inscrit
Henridic