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 :

Questions sur : Envoie de Mail Automatique en vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Par défaut Questions sur : Envoie de Mail Automatique en vba
    Bonjour tous le monde!!!

    Vous allez bien par un si beau temps?!!

    J'ai une question sur la macro que j'ai développé (Grâce au forum, Merci Forum ).

    J'ai un dossier avec environs 500 PDF, je dois envoyer un mail par PDF inséré en PJ à un destinataire unique.

    Pouvez vous me dire si mon code est adapté à ce grand nombre d'envoi et si non m'aider à l'améliorer.

    Merci

    Code :
    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
    Sub Envoi_Mail()
     
    Dim Chemin As String
    Dim Fichier As String
    Dim i As Integer, j As Integer
    Dim TabPJ() As String
    Dim ObjOutlook As New Outlook.Application
    Dim oBjMail
    Dim Nom_Fichier As String
     
     
    'Sélection du chemin du répertoire contenant les PJ
    Chemin = InputBox("Veuillez coller le chemin d'accès complet du dossier comportant les pièce jointes")
     
    'Ouverture du répertoire
    'Shell "C:\windows\explorer.exe " & Chemin, vbMinimizedFocus
     
    ReDim Preserve TabPJ(NombreFichiers(Chemin))
     
    'Boucle sur tous les types de fichiers du répertoire.
    Fichier = Dir(Chemin & "\*.*")
    'Utilisez la syntaxe suivante pour boucler sur tous les fichiers xls:
    'Fichier = Dir(Chemin & "*.xls")
    i = 1
        Do While Len(Fichier) > 0
            'écrit le résultat dans la fenêtre d'exécution (Ctrl+G).
            'MsgBox (Chemin & "\" & Fichier)
            TabPJ(i) = Chemin & "\" & Fichier
            Fichier = Dir()
            i = i + 1
        Loop
     
    For j = 1 To UBound(TabPJ)
     
    Set ObjOutlook = New Outlook.Application
    Set oBjMail = ObjOutlook.CreateItem(olMailItem)
    Nom_Fichier = TabPJ(j)
     
    If Nom_Fichier = "" Then Exit Sub
    '---------------------------------------------------------
         With oBjMail
           .SentOnBehalfOfName = "bbb@ccc.fr"
           .To = "aaa@mmm.fr" ' le destinataire
           .Subject = "TEST"          ' l'objet du mail
           .Body = "Test de quentin"  'le corps du mail ..son contenu
           .Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
           '.Display  '   Ici on peut supprimer pour l'envoyer sans vérification
           .Send
        End With
        ObjOutlook.Quit
        Set oBjMail = Nothing
        Set ObjOutlook = Nothing
     
    Next j
     
    MsgBox ("fini")
    End Sub
    Function NombreFichiers(ByVal Dossier As String) As Long
        Dim FSO As Object
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        NombreFichiers = FSO.GetFolder(Dossier).Files.Count
     
        Set FSO = Nothing
    End Function

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu as testé ton code avec un mail et 1 pj ?

    car il me semblait nécessaire de faire un .Save sur le MailItem après l'instruction d'ajout de la pj ?

    ensuite, tu met chaque chemin de la pj dans un tableau, via un boucle et Dir. Ensuite tu refais une boucle sur ton tableau pour générer le mail et y adjoindre la pj.
    tu pourrais tout mettre dans ta première boucle ?

    tu balayes avec Dir, et pour chaque élément tu fais ta génération de mail et attachement de la pj ?

    tu utilises également .Send pour faire l'envoi immédiat. Faut dans ce cas vérifier que tu as bien autorisé cet envoi automatique dans tes options outlook, sinon tu vas avoir un message d'avertissement à valider pour chaque mail

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Par défaut
    Merci pour ta réponse joe.levrai.

    Oui j'ai testé ma macro avec une dizaine de pièce jointe à envoyer et je n'ai aucun message d'erreur ou de confirmation.
    J'ai besoin de faire 2 boucles car au début je dois créer un fichier Excel avec toutes les pièces jointes et leurs tailles pour une vérification.
    Ensuite une confirmation de l'envoie de tous les mails sera demandé.
    Ca je ne l'ai pas encore fait.

    J'ai récupéré le code sur le net donc la ligne 29 "Fichier = Dir()" je ne sais pas trop si c'est nécessaire.

    tu dis : car il me semblait nécessaire de faire un .Save sur le MailItem après l'instruction d'ajout de la pj ?

    Ca fait quoi exactement?

    Sinon tu pense que ca ira avec 500 mail?

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Dir() est nécessaire pour balayer ton répertoire.

    concernant l'enregistrement du mail lors d'insertion de Pj, c'est peut être quand on veut en ajouter plusieurs
    j'utilise quelques macros directement dans Outlook pour transmettre des lots contenant plusieurs PJ, et de mémoire j'étais obligé à un moment de placer des .Save après les ajouts de PJ

    concernant le message d'alerte, peut être que l'option qui désactive la sécurité des envois automatiques et déjà cochée sur ton client outlook


    ton code m'a l'air fonctionnel à vue d'oeil, si t'as un doute, je te conseille de le poster dans le forum VBA Outlook, Oliv- te diras rapidement si y'a une coquille

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

Discussions similaires

  1. envoie de mail automatique sur outlook via Excel 2003
    Par shakelife dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/12/2011, 08h04
  2. Question sur accès fichier word depuis excel (VBA)
    Par jerome.grange dans le forum VBA Word
    Réponses: 6
    Dernier message: 22/09/2006, 17h34
  3. [VB6]envoie de mail automatiquement
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 28/04/2006, 14h14
  4. Réponses: 14
    Dernier message: 17/11/2005, 17h16
  5. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59

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