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 :

envoi mail outlook avec vba excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut envoi mail outlook avec vba excel
    Bonjour,

    moi j'ai toujours le message d'Outlook :
    Un programme tente d'envoyer un message électronique en votre nom...

    j'ai Outlook 2010 et Excel 2010

    mon code VBA EXCEL :
    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
    Set MyMail = MonOutlook.CreateItem(olMailItem)
    MyMail.To = adresse_mail
        ' MyMail.CC = adresse_mail                  'ici on peut mettre les adresse en copie
    MyMail.Subject = Feuil1.Cells(num_ligne, 2)     ' Sujet en colonne 2
    MyMail.Body = Feuil1.Cells(num_ligne, 3)        ' Message en colonne 3
    MyMail.Send                                     ' envoi du message
    MyMail.Display
    MyMail.SendKeys "^{ENTER}"
     
    ' Essais ci-dessous infructueux ....
    'MyMail.SendKeys "{TAB}", True
    'MyMail.SendKeys "{TAB}", True
    'MyMail.SendKeys "{ENTER}", True
    ' SendKeys "%{s}", True                           'Envoie le mail sans confirmation
     
    Set MonOutlook = Nothing
    sans utiliser CDO, est-ce possible ?
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir ici

  3. #3
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    @ kiki29 :
    j'ai oublié de préciser : "sans utiliser de logiciel externe"
    Merci.

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, je précise une chose : je n'utilise pas OutLook, donc fais une recherche sur CDO

  5. #5
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    kiki29 Salut, je précise une chose : je n'utilise pas OutLook, donc fais une recherche sur CDO
    Justement moi j'utilise Outlook 2010 et je cherche à automatiser des mails depuis Excel... sans demande de confirmation unitaire.

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, bis repetita placent : fais une recherche sur CDO

  7. #7
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Sans CDO (que je ne peux pas utiliser...) ni logiciel externe, c'est possible ou pas ?
    Merci.

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, désolé : pas de bras pas de chocolat.

  9. #9
    Membre expert

    Développeur NTIC
    Inscrit en
    Janvier 2011
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Développeur NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 670
    Points : 3 942
    Points
    3 942
    Par défaut
    Si tu veux j'ai deux procédures qui permettent de convertir une plage de données Excel en HTML puis d'envoyer ce mail avec l'html comme corps de message. Il ne me semble pas que ça utilise CDO.

  10. #10
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Citation Envoyé par Zweet Voir le message
    Si tu veux j'ai deux procédures qui permettent de convertir une plage de données Excel en HTML puis d'envoyer ce mail avec l'html comme corps de message. Il ne me semble pas que ça utilise CDO.
    > Je suis preneur !

  11. #11
    Membre expert

    Développeur NTIC
    Inscrit en
    Janvier 2011
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Développeur NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 670
    Points : 3 942
    Points
    3 942
    Par défaut
    Citation Envoyé par fazpedro Voir le message
    > Je suis preneur !
    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
    Sub Envoi_Mail_Feuille()
        Dim rng As Range 
        Dim OutApp As Object 
        Dim OutMail As Object 
     
        With Application
            .EnableEvents = False
            .ScreenUpdating = False
        End With
     
        Set rng = Nothing
        Set rng = Feuil1.UsedRange  'On définit la plage de données à convertir en HTML
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
     
        On Error Resume Next
        With OutMail
            .To = ""
            .CC = ""
            .BCC = ""
            .Subject = ""
            .HTMLBody = RangetoHTML(rng) 'On appelle la fonction RangetoHTML qui va convertir la plage en données HTML 
            .Save '.Save pour sauvegarder le mail dans les boruillons, .send pour l'envoyer
        End With
        On Error GoTo 0
        With Application
            .EnableEvents = True
        End With
        Set OutMail = Nothing
        Set OutApp = Nothing
    End Sub
    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
    Function RangetoHTML(rng As Range)
        Dim fso As Object
        Dim ts As Object
        Dim TempFile As String
        Dim TempWB As Workbook
        TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") &  ".htm"  
        rng.Copy 'on copie la plage de données
        Set TempWB = Workbooks.Add(1) 'On créer un classeur temporaire qui reçoit la plage de données
        With TempWB.Sheets(1)
            .Cells(1).PasteSpecial Paste:=8
            .Cells(1).PasteSpecial xlPasteValues, , False, False
            .Cells(1).PasteSpecial xlPasteFormats, , False, False
            .Cells(1).Select
            Application.CutCopyMode = False
            On Error Resume Next
            .DrawingObjects.Visible = True
            .DrawingObjects.Delete
            On Error GoTo 0
        End With
     
        'On exporte le classeur temporaire en html
        With TempWB.PublishObjects.Add( _
             SourceType:=xlSourceRange, _
             Filename:=TempFile, _
             Sheet:=TempWB.Sheets(1).Name, _
             Source:=TempWB.Sheets(1).UsedRange.Address, _
             HtmlType:=xlHtmlStatic)
            .Publish (True)
        End With
     
        Set fso = CreateObject("Scripting.FileSystemObject") 'on créer l'objet de script
        Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
        RangetoHTML = ts.ReadAll
        ts.Close
        RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                              "align=left x:publishsource=")
     
        TempWB.Close savechanges:=False
     
        'On supprime les fichiers temporaires résiduels
        Kill TempFile
     
        Set ts = Nothing
        Set fso = Nothing
        Set TempWB = Nothing
     
    End Function

    Enjoy ! (en espérant que ça t'aide).

  12. #12
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Merci Zweet

    je n'ai plus de message de sécurité d'Outlook et les messages arrivent bien,

    il me reste quelques points à voir, si vous avez une idée...

    (1) Je n'ai pas d'expéditeur dans Outlook
    j'ai essayé le code ci-dessous mais sans résultat... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     With OutMail
            .From = "Expediteur"   'Expediteur
    (2) Concaténer deux cellules de texte
    je récupère la valeur du texte dans la colonne 3 d'Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set rng = Feuil1.Cells(num_ligne, 3) 'On définit la plage de données à convertir en HTML
    je souhaite récupérer deux valeurs : la colonne 3 et la colonne 4,
    j'ai essayé les codes ci-dessous sans résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    ' essai 1
    Set rng = Feuil1.Cells(num_ligne, 3) & Feuil1.Cells(num_ligne, 4)
     
    ' essai 2
    Set rng = Range("Feuil1.Cells(num_ligne, 3):Feuil1.Cells(num_ligne, 4)")
    Encore merci !

  13. #13
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    je n'ai plus de message de sécurité d'Outlook et les messages arrivent bien,
    En fait, ils arrivent mais en tant que "brouillon" et ne sont pas envoyés au destinataire...

  14. #14
    Membre expert

    Développeur NTIC
    Inscrit en
    Janvier 2011
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Développeur NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 670
    Points : 3 942
    Points
    3 942
    Par défaut
    Citation Envoyé par fazpedro Voir le message
    En fait, ils arrivent mais en tant que "brouillon" et ne sont pas envoyés au destinataire...
    .send pour les envoyer

    Expéditeur c'est le mail de la personne (pour mon appli je n'en met pas).

    pour la variable range, je pense que vous pouvez la définir en nommant la plage directement dans Excel.

  15. #15
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Désolé Zweet
    j'ai mis :
    => Résultat : le mail est envoyé mais toujours avec le message de confirmation Outlook :
    "Un programme tente d'envoyer un message électronique en votre nom..."

    Retour à la case départ !

  16. #16
    Membre expert

    Développeur NTIC
    Inscrit en
    Janvier 2011
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Développeur NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 670
    Points : 3 942
    Points
    3 942
    Par défaut
    Zut ... Je pensais que ça fonctionnerai ...
    Désolé

  17. #17
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    Pour ne pas avoir le message de sécurité il faut utiliser la méthode CDO ou Sendkeys (mais beaucoup moins fiable car dépendant du temps de réponse)

    Une petite recherche via le forum devrait te donner quelques exemples.

    A+

  18. #18
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Bonjour Fvandermeulen

    Pour utiliser CDO :
    Le problème est que je passe par un proxy et que je n'ai pas toutes les informations relatives au SMTP...

  19. #19
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Bonjour,
    J'ai enfin trouvé la parade pour ne plus avoir le message :

    Sous Windows7 :
    > Démarrer
    >> Panneau de configuration
    >>> Centre de maintenance
    >>>> Sécurité
    Désactiver "Protection contre les logiciels espions et programmes indésirables"

    C'est nickel !

  20. #20
    Membre expert

    Développeur NTIC
    Inscrit en
    Janvier 2011
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Développeur NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 670
    Points : 3 942
    Points
    3 942
    Par défaut
    Merci pour ton retour, en espérant que ça aide d'autres utilisateurs !

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

Discussions similaires

  1. [XL-2010] Envoi mail outlook par VBA Excel
    Par bboy-eazy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/12/2014, 07h38
  2. [XL-2007] envoi mail outlook avec vba excel
    Par yaco32 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/01/2013, 15h57
  3. envoi mail outlook avec vba excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2010, 10h45
  4. [XL-2003] envoie mail outlook avec donnée Excel
    Par xoum89 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/07/2010, 15h48
  5. [XL-2003] Envoi mail Outlook via VBA Excel erreur
    Par altra dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/08/2009, 16h50

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