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 depuis excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut envoi mail depuis excel
    bonjour à tous,
    suite à de nombreuses recherches, je suis arrivé à ce code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim objOutlook As New Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
     
     
     
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    With objOutlookMsg
           .To = "tonton@tata"
           .Subject = "blablabla"
           .Body = ""
            .Display
    End With
    Set objOutlookMsg = Nothing
    cependant je souhaite aussi mettre incorporer en piece jointe mon fichier excel en cours (activeworkbook) mais je ne trouve pas la bonne syntaxe, pouvez vous m'aider sur ce point?

    aussi, si un utilisateur ne possede pas outlook sur son poste, ce code fonctionnera t-il?
    merci de votre aide
    cordialement

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,
    Citation Envoyé par luko6
    cependant je souhaite aussi mettre incorporer en piece jointe mon fichier excel en cours (activeworkbook) mais je ne trouve pas la bonne syntaxe, pouvez vous m'aider sur ce point?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    With objOutlookMsg
            .Attachments.Add activeworkbook.FullName
           .To = "tonton@tata"
           .Subject = "blablabla"
           .Body = ""
            .Display
    End With
    Set objOutlookMsg = Nothing
    Citation Envoyé par luko6
    aussi, si un utilisateur ne possede pas outlook sur son poste, ce code fonctionnera t-il?
    je ne pense pas non!

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut
    Bonjour,

    Je me suis inspiré de ce que j'ai pu trouver ici et là, pour écrire ce code. Il sauvegarde la feuille dans un nouveau fichier (avec un nom du type "Nom - Date"), l'envoie, puis efface le fichier.

    Il doit normalement fonctionner avec n'importe quelle messagerie installée.

    J'espère qu'il te sera utile.

    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
    On Error GoTo GestionErreur
    Dim Sourcewb As Workbook, Destwb As Workbook, Temp As String, strErreurEnvoiMail As String
    Set Sourcewb = ActiveWorkbook
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
     
    Temp = ThisWorkbook.Path & Application.PathSeparator & "Nom " & Format(Date, "ddmmyyyy") & ".xls"
    strErreurEnvoiMail = "Impossible d'envoyer la feuille automatiquement."
     
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
     
    Destwb.SaveAs Filename:=Temp, FileFormat:=xlExcel8
    '------ Envoi du mail avec la méthode sendmail.
    strSujetMail = "Bla Bla Bla"
    strDestinataires(0) = "toto@domaine.com": strDestinataires(1) = "titi@domaine.com"
    Destwb.SendMail strDestinataires, strSujetMail, False
     
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
    Destwb.Close savechanges:=False
    Kill Temp
     
    Exit Sub
    GestionErreur: MsgBox strErreurEnvoiMail
    End Sub

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par luko6 Voir le message
    aussi, si un utilisateur ne possede pas outlook sur son poste, ce code fonctionnera t-il?
    Bonjour,

    Il y a moyen d'envoyer un mail sans passer par Outlook, voir FAQ ci-dessous sur l'utilisation des messageries en VBA

    http://excel.developpez.com/faq/?pag...ailCDOexchange

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut
    merci pour vos réponses
    voici le code que l'on trouve dans la FAQ pour envoyer un mail peu importe le logiciel utilisé
    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
    Sub Envoi_CDO1()
    Dim CdoMessage As CDO.Message
    Dim Fichier As Variant
     
        ChDir "C:\Documents and Settings\UserName\Mes documents\PdfOut"
        Fichier = Application.GetOpenFilename("Fichiers PDF (*.pdf), *.pdf")
     
        If Fichier = False Then Exit Sub
     
        Set CdoMessage = New CDO.Message
        With CdoMessage
            .Subject = "Exemple"
            .From = "xxxxx@wanadoo.fr"
            .To = "yyyyy@orange.fr"
            .CC = ""
            .BCC = ""
            .TextBody = "Texte dans le corps de message"
            .AddAttachment Fichier
            .Send
        End With
     
        Set CdoMessage = Nothing
    End Sub
    comment puis je l'adpater en mettant en PJ le classeur en cours?
    je ne souhaite pas l'envoyer automatiquement, je souhaite que l'utilisateur clique sur son bouton envoyer (fonction "display" dans mon premier code)
    merci

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut
    bonjour à tous,
    je bloque toujours pour insérer ma PJ
    voici mon code actuel
    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
    Dim CdoMessage As CDO.Message
    Dim Fichier As Variant
     
    Fichier = ActiveWorkbook.FullName
        Set CdoMessage = New CDO.Message
        With CdoMessage
            .Subject = "Quizz"
             .To = "aaaa@****"
            .CC = ""
            .BCC = ""
            .AddAttachment Fichier
            .Send
        End With
     
        Set CdoMessage = Nothing
    j'ai une erreur d'execution me disant que mon fichier est utilisé par un autre processus, pouvez vous m'aider?
    merci

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Pour ma part, je ne mets (quasi) jamais de programme dans le classeur données.
    J'applique le principe frontale/dorsale d'Access.
    Autrement dit, j'ai un classeur "application" et un ou des classeurs "données".
    Si je dois écrire ou lire dans le classeur données, je le fais via un ou des UserForms.
    Travailler des cette façon aurait pour avantage que ton fichier données serait indépendant de ton application et que tu pourrais l'envoyer sans problème.

    Si cette scission n'est pas possible dans ton cas, tu pourrais essayer de faire une copie de ton classeur et d'envoyer cette copie avant de la supprimer.

    Bonne chance.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. envoi mail fichier excel en VBA
    Par natie_49 dans le forum Excel
    Réponses: 1
    Dernier message: 09/07/2007, 19h56
  2. [VBA] Gérer la taille des cellules lors de l'envoi de mail depuis excel
    Par Arschney dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2007, 10h58
  3. [VBA-E] Envoi d'un mail depuis Excel avec lien hypertexte
    Par SlySylvain dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/05/2007, 17h54
  4. Envoi de mail depuis Excel 2003 via Outlook 2003
    Par SlySylvain dans le forum Excel
    Réponses: 2
    Dernier message: 19/04/2007, 09h01
  5. Fenetre de validation sur l'envoi de mail depuis Excel
    Par pascal58 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/11/2006, 18h15

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