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 :

Bug lors de l'ajout d'une PJ dans un mail à partir d'Excel [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Novembre 2021
    Messages : 19
    Par défaut Bug lors de l'ajout d'une PJ dans un mail à partir d'Excel
    Bonjour,

    J'ai adapté le code suivant :

    L'envoi par mail fonctionne mais sur les 12 mails que je devais envoyer, le premier envoie sa PJ comme prévu, mais le deuxième mail envoie sa PJ et celle du premier, le 3eme, sa pj et les deux précédentes. Etc.


    PieceJointe = Range("e" & Ligne) envoi à une cellule où l'adresse du fichier est stocké sous forme de ="serveur\chemin\nomdufichier.pdf".

    J'ai essayé de forcer une RAZ avec PieceJointe = "" mais c'est ko.

    Une idée ?
    Merci

    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
    Public Sub CDOMail()
     
        Dim Mail    As CDO.Message
        Dim Config  As CDO.Configuration
        Dim Ligne As Integer
     
        Set Mail = CreateObject("CDO.Message")
        Set Config = CreateObject("CDO.Configuration")
     
        Config.Fields(cdoSendUsingMethod).Value = 2
        Config.Fields(cdoSMTPServer).Value = "xxxx"
        Config.Fields(cdoSMTPServerPort).Value = 25
        Config.Fields.Update
     
        Set Mail.Configuration = Config
     
        For Ligne = 8 To Cells(Rows.Count, 2).End(xlUp).Row
     
        PieceJointe = Range("e" & Ligne)
     
        With Mail
            .To = xxx
    '        .CC = xxx
            .From = xxx
            .Subject = Range("c2") & Range("d" & Ligne)
            .TextBody = Range("c3")
     
            .AddAttachment (PieceJointe)
     
            .Send
        End With
     
        PieceJointe = ""
     
        Next Ligne
     
        MsgBox Ligne - 8 & " fichiers ont été envoyés par mail"
     
        Set Config = Nothing
        Set Mail = Nothing
     
    End Sub

  2. #2
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 032
    Par défaut
    Bonjour,
    Une idée : après l'envoi du mail, supprimer l'objet après la ligne 33 (set mail = Nothing)
    Puis générer un nouveau objet (vos lignes 7 et 15)

    Bonne continuation.

  3. #3
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Novembre 2021
    Messages : 19
    Par défaut
    Citation Envoyé par laurent_ott Voir le message
    Bonjour,
    Une idée : après l'envoi du mail, supprimer l'objet après la ligne 33 (set mail = Nothing)
    Puis générer un nouveau objet (vos lignes 7 et 15)

    Bonne continuation.
    Bonjour,

    Ca a parfaitement fonctionné. Un grand merci

    Je donne le code modifié si cela intéresse qqlun :

    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
     
     
    Public Sub CDOMail()
     
        Dim Mail    As CDO.Message
        Dim Config  As CDO.Configuration
        Dim Ligne As Integer
     
        Set Config = CreateObject("CDO.Configuration")
     
        Config.Fields(cdoSendUsingMethod).Value = 2
        Config.Fields(cdoSMTPServer).Value = "xxx"
        Config.Fields(cdoSMTPServerPort).Value = 25
        Config.Fields.Update
     
     
        For Ligne = 8 To Cells(Rows.Count, 2).End(xlUp).Row 'plage données : à partir de la ligne 8 jusqu'à la dernière valeur en colonne 1
     
        Set Mail = CreateObject("CDO.Message")
        Set Mail.Configuration = Config
     
        PieceJointe = Range("e" & Ligne) 'pièce jointe = valeurs en colonne e (colonne + n° de la ligne traitée)
     
        With Mail
            .To = xxx
    '        .CC = xxx
            .From = xxx        .Subject = Range("c2") & Range("d" & Ligne)
            .TextBody = Range("c3")
     
            .AddAttachment (PieceJointe)
     
            .Send
        End With
     
        PieceJointe = ""
        Set Mail = Nothing
     
        Next Ligne
     
        MsgBox Ligne - 8 & " fichiers ont été envoyés par mail"
     
        Set Config = Nothing
     
     
    End Sub

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

Discussions similaires

  1. [JNDI] Erreur non explicite lors de l'ajout d'une entrée dans l'AD
    Par elias dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 08/07/2011, 21h48
  2. Réponses: 2
    Dernier message: 07/05/2008, 18h24
  3. Bug lors de l'utilisation d'une fonction dans une macro.
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/06/2007, 14h35

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