IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Pièce jointe d'un email sous Outlook depuis Excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut Pièce jointe d'un email sous Outlook depuis Excel
    Bonjour,

    J'ai un problème sur une macro pour envoyer une pièce jointe sous Outlook. L'email s'ouvre bien, le destinataire, l'objet et le corps du message se renseignent correctement mais la pièce jointe ne se met pas.

    La macro fonctionnait avec Outlook Express mais avec Outlook, je galère un peu ... beaucoup

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    Sub EnvoiMail()
      Dim nomfich As String
      Dim nomfich2 As String
      Dim Corps As String
      Dim ol As New Outlook.Application, olmail As MailItem, SendEmail
     
     
    Dim Msg, Style, Title, Response, MyString
     
     
    'Cde_a_emailer = InputBox("Entrez le n° de commande pour lequelle vous voulez envoyer un email", "N° de commande")
    'Range("L1").Value = Cde_a_emailer
    Cde = InputBox("Entrez le n° de commande pour lequelle vous voulez envoyer un email", "N° de commande")
    Range("K1").Value = Cde
    'Cde = Range("K1").Value
     
    If Cde = "" Then Exit Sub
     
    Range("K2").Select
    Client = ActiveCell.Value
     
    Range("K3").Select
    Email = ActiveCell.Value
     
    Range("K4").Select
    Date_expe = ActiveCell.Value
    Range("K5").Select
    Date_expe2 = ActiveCell.Value
    Range("K6").Select
    Date_Cde = ActiveCell.Value
    Range("K7").Select
    Date_Cde2 = ActiveCell.Value
     
    ActiveSheet.Range("A1").Select
     
     
        Msg = "Confirmez vous l'envoi d'un email pour la commande" & vbCrLf & Cde & " du client " & Client
        Style = vbYesNo + vbQuestion
        Title = "Confirmation envoi email"
     
        Response = MsgBox(Msg, Style, Title) ' Affiche le message.
     
     
            If Response = vbYes Then    ' L'utilisateur a choisi Oui.
                myrep = "\\Serveur-caill\Documents\temporaire\Nicolas\Envoi_BA_par_email\Cde_clé_USB\" & Date_expe
                nomfich = myrep & "\" & Cde & ".txt"
                nomfich2 = Dir(myrep & "\*" & Cde & "*.txt")
     
                If nomfich2 <> "" Then
     
                Adresse = Email
                Sujet = "BULLETINS D'ANALYSE COMMANDE " & Cde
                Texte = "Bonjour," & vbCrLf & vbCrLf & "Veuillez trouver ci-joint la liste des produits expédiés le " & Date_expe2 & " et pour laquelle vous pourrez télécharger les bulletins d'analyse sur notre site." & vbCrLf & "Bonne réception." & vbCrLf & "Bien cordialement." & vbCrLf & vbCrLf & "Le Service Commercial / Herboristerie Cailleau" & vbCrLf & "http://bulletin.herbo-cailleau.com"
     
     '           Shell "C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe " & "/mailurl:mailto:" & _
     '           Adresse & "?subject=" & Sujet & "&Body=" & Texte & ""
     '           SendKeys "%I" & "p" & nomfich & "~"
                        'Signification des caractères après "SendKeys":
                        '* %I et P = Insertion de la pièce jointe dans Outlook Express. (%=Alt)
                        '* ~ = Validation. (~=Entrée)
                        '* %S = Envoyer.
     
                   Shell """C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe"""
                    Set ol = New Outlook.Application
                    Set olmail = ol.CreateItem(olMailItem)
                    'admail = .Range("A" & i) 'admettons tes mails en col A
     
     
                    With olmail
                        .To = Email
                        .Subject = "BULLETINS D'ANALYSE COMMANDE " & Cde 'Sujet
                        .Body = Texte 'Corps du mail
                        .display     'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
     
                    End With
     
                Else
                Msg = "Il n'y a pas de commande n° " & Cde & " expédiée à la date du" & vbCrLf & Date_expe2
                Style = vbOK
                Title = "Confirmation envoi email"
     
                Response = MsgBox(Msg, Style, Title) ' Affiche le message.
     
                    If Response = vbOK Then
                        Date_Cde = InputBox("Entrez la Date d'expédition de la commande" & vbCrLf & Cde & vbCrLf & vbCrLf & "        sous le format :   aaaammjj", "Date d'expédition de la commande")
                        Range("K6").Value = Date_Cde
     
                        myrep = "\\Serveur-caill\Documents\temporaire\Nicolas\Envoi_BA_par_email\Cde_clé_USB\" & Date_Cde
                        nomfich = myrep & "\" & Cde & ".txt"
                        nomfich2 = Dir(myrep & "\*" & Cde & "*.txt")
     
                        If nomfich2 <> "" Then
     
                            Adresse = Email
                            Sujet = "BULLETINS D'ANALYSE COMMANDE " & Cde
                            Texte = "Bonjour," & vbCrLf & vbCrLf & "Veuillez trouver ci-joint la liste des produits expédiés le " & Date_Cde2 & " et pour laquelle vous pourrez télécharger les bulletins d'analyse sur notre site." & vbCrLf & "Bonne réception." & vbCrLf & "Bien cordialement." & vbCrLf & vbCrLf & "Le Service Commercial / Herboristerie Cailleau"
     
                          '  Shell "C:\Program Files\Outlook Express\msimn.exe " & "/mailurl:mailto:" & _
                          '  Adresse & "?subject=" & Sujet & "&Body=" & Texte & ""
                          '  SendKeys "%I" & "p" & nomfich & "~"
                                'Signification des caractères après "SendKeys":
                                '* %I et P = Insertion de la pièce jointe dans Outlook Express. (%=Alt)
                                                            '* ~ = Validation. (~=Entrée)
                                '* %S = Envoyer.
     
                            Shell """C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe"""
                                Set ol = New Outlook.Application
                                Set olmail = ol.CreateItem(olMailItem)
                                'admail = .Range("A" & i) 'admettons tes mails en col A
     
     
                            With olmail
                                .To = Email
                                .Subject = "BULLETINS D'ANALYSE COMMANDE " & Cde 'Sujet
                                .Body = Texte 'Corps du mail
                                .Attachments.Add nomfich
                                .display     'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
     
                            End With
     
                        Else
                        Msg = "Il n'y a pas de commande n° " & Cde & " expédiée à la date du" & vbCrLf & Date_Cde2
                        Style = vbOK
                        Title = "Confirmation envoi email"
                        Response = MsgBox(Msg, Style, Title) ' Affiche le message.
     
                        End If
                    End If
                End If
            End If
     
            ActiveSheet.Range("A1").Select
     
     
     
     
    End Sub
    Merci

    Nicolas

  2. #2
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    Le même type de sujet a été lancé (et résolu) aujourd'hui sur ce topic : http://www.developpez.net/forums/d14...l/#post7759273
    Regarde si celui-ci peut t'aider.
    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Le topic a été ouvert car le premier était résolu mais pas sur le problème de l'absence de pièce jointe.

    Maintenant, outlook s'ouvre mais la pièce jointe ne se met pas d'où ce post.

    Est ce que quelqu'un peut m'aider ?

    Merci

    Nicolas

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    A tout hasard, tu ne l'a pas oublié ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                    With olmail
                        .To = Email
                        .Subject = "BULLETINS D'ANALYSE COMMANDE " & Cde 'Sujet
                        .Body = Texte 'Corps du mail
                        .display     'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
     
                    End With
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Merci Dom.
    Effectivement il manquait un EndWith.

    Mais mon problème n'est pas celui-ci, le problème vient du fait que la pièce jointe ne se mets pas dans l'email.


    Mais je viens de trouver !!
    Il manquait le principal .attachements.add "source"

    Merci

    Nicolas

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Ce n'était pas ma question, je pense que tu as oublié cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Attachments.Add nomfich
    à l'endroit que je t'ai indiqué, recontroles ton code vers le haut, mais comme je n'ai pas détaillé, j'ai peut-être tort
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    J'ai modifié mon post d'avant et tu as publié ta réponse en même temps

    C'est effectivement le pricipal qui manquait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With olmail
                                .To = Email
                                .Subject = "BULLETINS D'ANALYSE COMMANDE " & Cde 'Sujet
                                .Body = Texte 'Corps du mail
                                .Attachments.Add nomfich
                                .display     'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
     
                            End With

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Envoyer un email sous Outlook avec pièce jointe depuis excel
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2014, 11h59
  2. [AC-2003] Ajout de HTML et pièces jointes dans un email
    Par Thotho-Maxime dans le forum VBA Access
    Réponses: 4
    Dernier message: 24/07/2009, 10h46
  3. [Toutes versions] Pièce jointe d'un email
    Par seba_stien dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/04/2009, 14h57
  4. extraire les piéces jointes d'un mail ds outlook
    Par khayour dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/06/2008, 15h43
  5. [VBA]Pièces jointes dans un Email
    Par Gabout dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/04/2007, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo