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 :

Envoyer un mail via OUTLOOK de Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut Envoyer un mail via OUTLOOK de Excel
    Bonjour à tous,

    Mes meilleurs vœux pour cette nouvelle année

    je vous remercie d'avance pour toute votre aide.

    Je voudrais générer un mail à partir d'Excel avec les données d'entrée suivantes :

    Dans la colonne C se trouve un numéro de local
    Dans la colonne D se trouve une date de début de prestation
    Dans la colonne I se trouve l'adresse mail du destinataire


    A partir de ces éléments, j'aimerais que 15 jours avant la date indiqué en colonne D un mail soit envoyé à la personne mentionnée en colonne I avec un message que je ne n'ai pas encore rédigé mais qui prévient mon client de notre intervention (valeur en colonne D)
    Dans ce mail, je voudrais récupérer le pdf lié à la valeur de la colonne C pour envoi (fiche d'identification du local)
    Le PDF en question est stocké dans un dossier du bureau (même dossier que mon fichier excel)

    J'espère avoir été assez précis dans mon explication

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Bonjour,

    chacune des étapes peut effectivement être prise en charge par une ou plusieurs instructions VBA.

    Sur quelle(s) partie(s) du code as-tu déjà commencé des choses ? quel est le soucis sur lequel tu butes actuellement ?

    Nous pouvons t'aider à progresser, mais pas te fournir du code tout fait, tu t'en doutes bien
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    Bonjour Jean-Philippe,

    J'ai effectivement commencé à écrire un bout de code pour le mailing
    Maintenant je bloque sur l'intégration de la PJ et la mise en forme du texte d'information dans le corps de mail
    Voici déjà ce que j'ai écris (désolé étant novice il y aura surement des incohérences ) mais pour l'avoir testé le mail est envoyé

    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
    Sub SendMail()
    Dim strTo As String
    Dim strSubject As String
    Dim strBody As String
    Dim MyTab As ListObject
    Dim LR As ListRow
    Dim MsgSent As Integer
    Dim MsgFailed As Integer
     
    MsgSent = 0
    MsgFailed = 0
    Set MyTab = Sheet1.ListObjects(1)
     
    For Each LR In MyTab.ListRows
        If LR.Range(4) >= Date - 15 Or LR.Range(4) = "FAUX" Then
            strTo = LR.Range(9)
            strSubject = "Local n°" & LR.Range(2)
            strBody = "Bonjour,Dans le cadre de notre campagne , vous recevez aujourd'hui ce mail pour une échéance à venir.Merci de libérer au maximum le sol de votre local pour nous permettre une intervention efficace."
     
            If SendActiveWorkbook(strTo, strSubject, , strBody) = True Then
     
                 MsgSent = MsgSent + 1
            Else
               MsgFailed = MsgFailed + 1
            End If
        End If
    Next LR
     
    If MsgFailed = 0 Then
        MsgBox ("Vous avez envoyé " & MsgSent & " mails")
    Else
        MsgBox ("Vous avez envoyé " & MsgSent & " mails." & MsgFailed & " messages n'ont pas pu etre remis")
    End If
    End Sub
     
     
    Function SendActiveWorkbook(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean
    On Error Resume Next
    Dim appOutlook As Object
    Dim mItem As Object
    SendActiveWorkbook = False
    On Error GoTo fin
    Set appOutlook = CreateObject("Outlook.Application")
    Set mItem = appOutlook.CreateItem(0)
     
    With mItem
        .To = strTo
        .CC = strCC
        .Subject = strSubject
        .Body = strBody
        .Send
    End With
     
    Set mItem = Nothing
    Set appOutlook = Nothing
    SendActiveWorkbook = True
    fin:
    End Function
    Merci pour l'aide

  4. #4
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    Alors j'ai encore avancé sur le texte dans le corps de mail
    J'ai inséré le code " & vbLf & " pour passer à la ligne

    Comment peut-on dans ce corps de texte insérer la date qui se trouve en colonne D

    Ensuite restera le sujet intégration du fichier pdf dans le mail

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    Regarde la discussion ci-dessous:
    https://www.developpez.net/forums/d1...ur-gras-corps/

    J'utilise des plages nommés pour récupérer des infos du fichier Excel mais tu peux très bien utiliser des cellules normales
    Et pour la mise en forme on m'avait conseillé le html

  6. #6
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Bonjour,

    Regarde la discussion ci-dessous:
    https://www.developpez.net/forums/d1...ur-gras-corps/

    J'utilise des plages nommés pour récupérer des infos du fichier Excel mais tu peux très bien utiliser des cellules normales
    Et pour la mise en forme on m'avait conseillé le html
    Bonjour Halaster08,

    Je recherche surtout à ce que dans la partie strBody je puisse intégrer le numéro de local qui est mentionné en colonne C
    Ce que je recherche est que dans le corps de mail apparaisse :
    "Bonjour,
    Dans le cadre de notre campagne , vous recevez aujourd'hui ce mail pour une échéance à venir pour le local "mentionné en colonne C".
    L'intervention sera prévue pour "valeur de la colonne D"

    Ensuite je souhaiterai qu'avant que le mail parte, je puisse y intégrer un pdf
    Actuellement, l'envoi se fait instantanément et je n'ai pas la possibilité d'insérer une PJ (le cas échéant un pdf)

    Si tu as une piste

    Merci

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par Christian_Pfender Voir le message
    Je recherche surtout à ce que dans la partie strBody je puisse intégrer le numéro de local qui est mentionné en colonne C
    Il faut écrire ton strbody en plusieurs fois et insérer tes valeurs grace l'opérateur de concaténation &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strbody = " bonjour ..." & worksheets("mafeuille").range("c1").value & "la suite de la phrase" & worksheets("mafeuille").range("d1").value & "..."

  8. #8
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Il faut écrire ton strbody en plusieurs fois et insérer tes valeurs grace l'opérateur de concaténation &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strbody = " bonjour ..." & worksheets("mafeuille").range("c1").value & "la suite de la phrase" & worksheets("mafeuille").range("d1").value & "..."
    J'ai essayé d'intégré comme indiqué le bout de code que tu m'as suggéré mais j'ai un code erreur

    J'ai essayé de rentrer un code pour la PJ : idem un code erreur au niveau de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                .Attachments.Add (strFolder & "\" & MaPJ)
    Voici le récap de ce que j'ai déjà écris :

    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
    Sub SendMail()
    Dim strTo As String
    Dim strSubject As String
    Dim strBody As String
    Dim MyTab As ListObject
    Dim LR As ListRow
    Dim MsgSent As Integer
    Dim MsgFailed As Integer
     
    MsgSent = 0
    MsgFailed = 0
    Set MyTab = Sheet1.ListObjects(1)
     
    For Each LR In MyTab.ListRows
        If LR.Range(4) >= Date - 15 Or LR.Range(4) = "FAUX" Then
            strTo = LR.Range(9)
            strSubject = "Local n°" & LR.Range(2)
            strBody = "Bonjour," & vbLf & "" & vbLf & "Dans le cadre de notre campagne de nettoyage des moquettes du Cargo Terminal, vous recevez aujourd'hui ce mail pour une échéance à venir concernant le local" & vbLf & "Merci de libérer au maximum le sol de votre local pour nous permettre une intervention efficace." & vbLf & "" & vbLf & "Vous trouverez en PJ les tâches sur la moquette qui avaient été répertoriées comme non traitable." & vbLf & "" & vbLf & "La date prévisionnelle d'intervention sera le"
            If SendActiveWorkbook(strTo, strSubject, , strBody) = True Then
     
                 MsgSent = MsgSent + 1
            Else
               MsgFailed = MsgFailed + 1
     
     
     
                       'Ajout d 'une PJ
            Dim MaPJ
     
            Dim strFolder As String, WshShell, leFichier
            Set WshShell = CreateObject("WScript.Shell")
            strFolder = WshShell.SpecialFolders("Desktop")
     
            MaPJ = "NouvelFiche.zip"
            'on verifie d'abord qu'il existe.
            If Dir(strFolder & "\" & MaPJ) <> "" Then
                '.Attachments.Add MaPJ  "NouvelFiche.zip"
                .Attachments.Add (strFolder & "\" & MaPJ)
            Else
                MsgBox "Fichier : " & MaPJ & vbCr & "Non trouvée sur:" & vbCr & strFolder, vbCritical
                .display
                'on affiche le mail et fin
                End
            End If
            'ajout ar lecture
            .ReadReceiptRequested = True
     
            'envoi au nom de
             .SentOnBehalfOfName = Worksheets("FR").Range("J13")
     
            'Soit je l'affiche
            'Display
            'Soit je l'envoi
            .Send
        End With
     
     
            End If
        End If
    Next LR
     
    If MsgFailed = 0 Then
        MsgBox ("Vous avez envoyé " & MsgSent & " mails")
    Else
        MsgBox ("Vous avez envoyé " & MsgSent & " mails." & MsgFailed & " messages n'ont pas pu etre remis")
    End If
     
    End Sub
     
     
    Function SendActiveWorkbook(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean
    On Error Resume Next
    Dim appOutlook As Object
    Dim mItem As Object
    SendActiveWorkbook = False
    On Error GoTo fin
    Set appOutlook = CreateObject("Outlook.Application")
    Set mItem = appOutlook.CreateItem(0)
     
    With mItem
        .To = strTo
        .CC = strCC
        .Subject = strSubject
        .Body = strBody
        .Send
    End With
     
    Set mItem = Nothing
    Set appOutlook = Nothing
    SendActiveWorkbook = True
    fin:
    End Function
    Please Help

  9. #9
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Essaye sans les parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      .Attachments.Add (strFolder & "\" & MaPJ)

  10. #10
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Essaye sans les parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      .Attachments.Add (strFolder & "\" & MaPJ)
    J'ai essayé en enlevant les "" mais "référence incorrecte ou non qualifiée" sur le .attachment

    Je sèche complètement là


  11. #11
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Bonjour,

    chacune des étapes peut effectivement être prise en charge par une ou plusieurs instructions VBA.

    Sur quelle(s) partie(s) du code as-tu déjà commencé des choses ? quel est le soucis sur lequel tu butes actuellement ?

    Nous pouvons t'aider à progresser, mais pas te fournir du code tout fait, tu t'en doutes bien
    Bonjour Jean-Phillipe,

    J'ai avancé sur le sujet mais là je bloque

    Une petite aide please

    Merci

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    Il n'est pas nécessaire d'ajouter les parenthèses pour ton ajout de pièce jointe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Attachments.Add (strFolder & "\" & MaPJ)
    devient donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Attachments.Add strFolder & "\" & MaPJ
    Je t'invite à reprendre le code proposé dans la et enrichi ici
    https://www.developpez.net/forums/d9...omplement-faq/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  13. #13
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    J'ai bien retiré les () mais toujours "référence incorrecte ou non qualifiée" sur le .attachment

    Je vous remets le code en complet :

    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
    Sub SendMail()
    Dim strTo As String
    Dim strSubject As String
    Dim strBody As String
    Dim MyTab As ListObject
    Dim LR As ListRow
    Dim MsgSent As Integer
    Dim MsgFailed As Integer
     
    MsgSent = 0
    MsgFailed = 0
    Set MyTab = Sheet1.ListObjects(1)
     
    For Each LR In MyTab.ListRows
        If LR.Range(4) >= Date - 15 Or LR.Range(4) = "FAUX" Then
            strTo = LR.Range(9)
            strSubject = "Local n°" & LR.Range(2)
            strBody = "Bonjour," & vbLf & "" & vbLf & "Dans le cadre de notre campagne de nettoyage des moquettes du Cargo Terminal, vous recevez aujourd'hui ce mail pour une échéance à venir concernant le local" & vbLf & "Merci de libérer au maximum le sol de votre local pour nous permettre une intervention efficace." & vbLf & "" & vbLf & "Vous trouverez en PJ les tâches sur la moquette qui avaient été répertoriées comme non traitable." & vbLf & "" & vbLf & "La date prévisionnelle d'intervention sera le"
            If SendActiveWorkbook(strTo, strSubject, , strBody) = True Then
     
     
    Dim MaPJ
     
            Dim strFolder As String, WshShell, leFichier
            Set WshShell = CreateObject("WScript.Shell")
            strFolder = WshShell.SpecialFolders("Desktop")
     
            MaPJ = "NouvelFiche.zip"
            'on verifie d'abord qu'il existe.
            If Dir(strFolder & "\" & MaPJ) <> "" Then
                '.Attachments.Add MaPJ  "NouvelFiche.zip"
                .Attachments.Add strFolder & "\" & MaPJ
            Else
                MsgBox "Fichier : " & MaPJ & vbCr & "Non trouvée sur:" & vbCr & strFolder, vbCritical
                .display
                'on affiche le mail et fin
                End
            End If
            'ajout ar lecture
            .ReadReceiptRequested = True
     
            'envoi au nom de
             .SentOnBehalfOfName = Worksheets("FR").Range("J13")
     
            'Soit je l'affiche
            'Display
            'Soit je l'envoi
            .Send
        End With
     
     
     
                 MsgSent = MsgSent + 1
            Else
               MsgFailed = MsgFailed + 1
     
     
     
     
     
            End If
        End If
    Next LR
     
    If MsgFailed = 0 Then
        MsgBox ("Vous avez envoyé " & MsgSent & " mails")
    Else
        MsgBox ("Vous avez envoyé " & MsgSent & " mails." & MsgFailed & " messages n'ont pas pu etre remis")
    End If
     
    End Sub
     
     
    Function SendActiveWorkbook(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean
    On Error Resume Next
    Dim appOutlook As Object
    Dim mItem As Object
    SendActiveWorkbook = False
    On Error GoTo fin
    Set appOutlook = CreateObject("Outlook.Application")
    Set mItem = appOutlook.CreateItem(0)
     
    With mItem
        .To = strTo
        .CC = strCC
        .Subject = strSubject
        .Body = strBody
        .Send
    End With
     
    Set mItem = Nothing
    Set appOutlook = Nothing
    SendActiveWorkbook = True
    fin:
    End Function

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    où est ton With ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Comme l'a spécifié Jean-Philippe, La ligne .Attachements.Add doit se trouver dans un bloc With... End With, ainsi que la ligne .Display. Or, il n'y a pas de bloc With... End With dans ta procédure, pas plus d'ailleurs qu'un objet de type Outlook.MailItem.

    De plus, le code montré semble envoyer le classeur Excel actif, alors que ce n'est apparemment pas ce qui était exprimé dans la demande initiale. Du coup, on s'y perd un peu. Peut-être devrais-tu reformuler avec précision ce que tu souhaites réaliser, sans code et sans jargon VBA, comme si tu rédigeais un cahier des charges.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Membre averti
    Homme Profil pro
    Responsable clientèle
    Inscrit en
    Décembre 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable clientèle
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 15
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut

    Comme l'a spécifié Jean-Philippe, La ligne .Attachements.Add doit se trouver dans un bloc With... End With, ainsi que la ligne .Display. Or, il n'y a pas de bloc With... End With dans ta procédure, pas plus d'ailleurs qu'un objet de type Outlook.MailItem.

    De plus, le code montré semble envoyer le classeur Excel actif, alors que ce n'est apparemment pas ce qui était exprimé dans la demande initiale. Du coup, on s'y perd un peu. Peut-être devrais-tu reformuler avec précision ce que tu souhaites réaliser, sans code et sans jargon VBA, comme si tu rédigeais un cahier des charges.
    Effectivement je vais reprendre ma demande initiale sans rien omettre

    Alors j'ai un fichier dans lequel j'ai :

    - un onglet "Planification 2022" dans lequel :
    en colonne C j'ai une liste de locaux
    en colonne D j'ai une date de début d'intervention sur le local en question
    en colonne I j'ai l'adresse mail pour le local concerné

    - ensuite j'ai des onglets que j'ai nommé avec le numéro de local de la colonne C (la trame de chaque onglet est identique mais le contenu diffère)

    Ce que j'essaie d'écrire en VBA :
    Etape 1 : enregistrer en pdf l'onglet actif dans le même dossier que le fichier (j'avais écris une macro avec un msgbox pour cette étape qui me positionne sur l'onglet et l'enregistre dans le dossier
    )
    Etape 2 : Envoyer un mail au client qui figure en colonne I à J-15 par rapport à la date qui figure en colonne D en incluant en PJ la fiche PDF que j'aurai créé pour le local mentionné en colonne C
    et qui porte le même nom

    Par ex, le local n° 10000 (colonne C) intervention prévue le 31/01/22 (colonne D), il faudrait envoyer un mail au client colonne I avec la pièce jointe (PDF du local 10000) à J-15

    J'espère que c'est plus clair et encore merci pour votre temps et aide précieuse

Discussions similaires

  1. [AC-2013] envoyer un mail via outlook même si outlook est fermé.
    Par nounous54 dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2016, 12h59
  2. Envoyer un mail (via outlook) via une selection de donnée Excel
    Par isa0144 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2015, 19h23
  3. [XL-2010] Envoi mail via Outlook depuis excel en VBA
    Par PATDRO dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/08/2012, 08h40
  4. Réponses: 3
    Dernier message: 07/12/2009, 11h31
  5. Envoyer un mail avec Outlook par Excel
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 02/02/2009, 10h57

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