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 :

VBA - Envoi mails automatiquement avec fichier joint en pdf


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    assistante commercial export
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : assistante commercial export

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Par défaut VBA - Envoi mails automatiquement avec fichier joint en pdf
    Bonjour à toutes et à tous!

    J'ai un classeur excel et j'aimerais envoyer juste une des feuilles ("offre detaillee") en format pdf à une liste de clients, via outlook. La feuille change à chaque fois en fonction du client (nom, coût du transport,...)

    Pour l'instant, j'ai réussi à faire un code pour mettre tous les docs en pdf mais je n'arrive pas à faire l'envoi.. J'ai déjà essayé de partir de différents codes sur le forum mais je n'ai pas réussi à les adapter à mon cas :/ Quelqu'un pourrait-il m'aider, s'il-vous-plait?

    Merci à toutes celles et ceux qui sont meilleurs que moi en VBA et qui seront inspiré(e)s
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    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
    Par défaut
    Salut, jette un œil ici

  3. #3
    Membre averti
    Femme Profil pro
    assistante commercial export
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : assistante commercial export

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Par défaut
    Salut!

    Merci pour ta réponse

    J'ai regardé et j'ai trouvé un code qui devrait théoriquement correspondre mais comme j'y comprends pas grand chose, je ne sais pas ce que je dois changer pour que ca corresponde vraiment à mon cas.. Tu aurais une idée? Parce que là ça ne marche pas; ça me met

    la méthode "Save As" de l'objet '_Workbook' a échoué
    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
    Sub Mail_ActiveSheet()
    'Working in Excel 2000-2016
    'For Tips see: <a href="http://www.rondebruin.nl/win/winmail/Outlook/tips.htm" target="_blank">http://www.rondebruin.nl/win/winmail/Outlook/tips.htm</a>
        Dim FileExtStr As String
        Dim FileFormatNum As Long
        Dim Sourcewb As Workbook
        Dim Destwb As Workbook
        Dim TempFilePath As String
        Dim TempFileName As String
        Dim OutApp As Object
        Dim OutMail As Object
     
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
     
        Set Sourcewb = ActiveWorkbook
     
        'Copy the ActiveSheet to a new workbook
        Sheets("offre detaillee").Copy
        Set Destwb = ActiveWorkbook
     
        'Determine the Excel version and file extension/format
        With Destwb
            If Val(Application.Version) < 12 Then
                'You use Excel 97-2003
                FileExtStr = ".xls": FileFormatNum = -4143
            Else
                'You use Excel 2007-2016
                Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
                End Select
            End If
        End With
     
        '    'Change all cells in the worksheet to values if you want
        '    With Destwb.Sheets(1).UsedRange
        '        .Cells.Copy
        '        .Cells.PasteSpecial xlPasteValues
        '        .Cells(1).Select
        '    End With
        '    Application.CutCopyMode = False
     
     
     
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
     
        With Destwb
            .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
            On Error Resume Next
            With OutMail
                .To = ""
                .CC = ""
                .BCC = ""
                .Subject = "This is the Subject line"
                .Body = "Hi there"
                .Attachments.Add Destwb.FullName
                'You can add other files also like this
                '.Attachments.Add ("C:\test.txt")
                .Send   'or use .Display
            End With
            On Error GoTo 0
            .Close savechanges:=False
        End With
     
        'Delete the file you have send
        Kill TempFilePath & TempFileName & FileExtStr
     
        Set OutMail = Nothing
        Set OutApp = Nothing
     
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
    End Sub

  4. #4
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Salut,
    Dans ton code tu fais déjà un export en PDF avec ...ExportAsFixedFormat...

    Tu as donc besoin de cette partie là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
     
    On Error Resume Next
    With OutMail
    .To = "" 'ici le destinataire
    .CC = ""
    .BCC = ""
    .Subject = "This is the Subject line"
    .Body = "Hi there"
    .Attachments.Add "C:\Users\P750\Documents\test\" & NFichier
    .Send 'or use .Display
    End With
    Cela ne fonctionne que pour le client en cours
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  5. #5
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Sinon,
    ily a cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub MAIL()
    Application.CommandBars.ExecuteMso ("FileEmailAsPdfEmailAttachment")
    End Sub
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  6. #6
    Membre averti
    Femme Profil pro
    assistante commercial export
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : assistante commercial export

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Par défaut
    Merci!! La deuxième solution marche super bien, merci. Je vais essayer de l'adapter un peu pour que ca corresponde plus à mon cas.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/10/2015, 15h18
  2. [XL-2003] Probleme VBA excel générer mail automatique avec piece jointe
    Par itshy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/03/2012, 10h46
  3. Pb envoi mail thunderbird avec fichier partagé
    Par nem007 dans le forum Excel
    Réponses: 4
    Dernier message: 17/02/2012, 15h11
  4. [PHP 4] Envoi d'email avec fichier joint
    Par tchamato dans le forum Langage
    Réponses: 1
    Dernier message: 28/09/2010, 15h23
  5. Probleme d"envoi mail automatique avec CDO
    Par Galactus13 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 06/10/2009, 23h21

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