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 sur Envoi de mail Outlook à partir d'une macro [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut Bug sur Envoi de mail Outlook à partir d'une macro
    Bonjour,

    Après des heures de recherches sur le net, je viens de trouver un fichier Excel composé de 3 onglets et d'un module dont le code est le suivant :
    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
    Option Explicit
     
    Sub envoi_Feuille()
    Dim olapp As Outlook.Application
    Dim malist, Count, Envoi, AdresseRépertoire As Variant
     On Error Resume Next
                '-------Contrôler dans Bisual Basic/Outils/Références/que Microsoft Outlook --,- Object Librairy est bien coché
    Dim adresse(1 To 10)
                '----------------------Création de la liste d'adresses mail contenus de la ligne 2 à 10
    Set malist = Sheets("Feuil1").Range("A2:A10")
    Count = 1
    For Each Envoi In malist
    If Len(Envoi) Then adresse(Count) = Envoi: Count = Count + 1
    Next
                '----------------------Copie de la liste d'adresse dans une cellule vide exemple H1
    [H1] = Array(adresse(1) & "; " & adresse(2) & "; " & _
    adresse(3) & "; " & adresse(4) & "; " & adresse(5) & "; " & adresse(6), adresse(7), adresse(8), adresse(9), adresse(10))
                '-------adresse du répertoire ou sera enregistré le fichier
    AdresseRépertoire = ActiveWorkbook.Path
                '---------------------copie de la feuille à envoyer
    Application.DisplayAlerts = False
    Sheets("Feuil2").Copy
                '---------------------Nom du fichier à envoyer
    ActiveWorkbook.SaveAs AdresseRépertoire & "\" & "Class.xls" ' ou adresse si le nom est dans une cellule  Range("E2").Value & ".xls"
    ActiveWindow.Close
                '---------------------Envoi par mail
    Sheets("Feuil1").Select
    Range("H1").Select
                '---------------------contrôle la validité ou la présence d'adresse mail en H1
    If [H1] Like "*@*" Then
                '---------------------Le mail est envoyé que si y a des adresses feuille 1 en H1
    Do While Not IsEmpty(ActiveCell)
    Dim msg As MailItem
    Set olapp = New Outlook.Application
    Set msg = olapp.CreateItem(olMailItem)
    msg.To = Range("H1").Value 'Adresse de la cellule contenant la liste des adesses mails
                '--------------------Saisir le sujet de l'envoi
    msg.Subject = "Coucou c'est moi "  ' ou saisir le sujet dans une cellule ex. Range("H2").Value
                '---------------------saisie du message
    msg.Body = "Bonjour" & Chr(13) & Chr(13) & "Veuillez trouver ci-joint" & Chr(13) & "copie du dossier" & Chr(13) & Chr(13) & "Cordialement"
                '---------------------ou saisir le message dans des cellules
    'msg.Body = Range("E5").Value & Chr(13) & Chr(13) & Range("E8").Value & Chr(13) & Chr(13)& Range("E10").Value
                '---------------------ou saisir le message dans des cellules
                '---------------------Adresse de la pièce jointe
    msg.Attachments.Add Source:=AdresseRépertoire & "\" & "Class.xls" ' ou adresse si le nom est dans une cellule  Range("E2").Value & ".xls"
    msg.Send
                '---------------------effacement de la liste d'envoi
    [H1].ClearContents
    Loop
    Else
    MsgBox "Aucune adresse valide sélectionnée"
    End If
    Application.ScreenUpdating = True
    End Sub
    Aucune complication pour comprendre ce code, la macro fonctionne correctement mais mon souci est le suivant :

    Lorsque je veux intégrer ces 3 feuilles ainsi que le code dans un autre fichier Excel (ma base de données composée de 15 feuilles renommées autrement que Feuil1, Feuil2, ...., Feuil15) çà bug dans le code.

    Si je renomme également les 3 feuilles du présent classeur (fichier joint) et que je modifie également le nom des feuilles dans le code Vba, çà bug aussi.

    Sinon La feuille 3 a-t-elle une importance primordiale vu qu'elle n'est pas utilisée dans le code ?

    Quelqu'un aurait il une solution à me proposer pour résoudre ce bug ?

    Cordialement.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Ca bugue ? sur quelle ligne ? quel est le message d'erreur ?

  3. #3
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut
    Dès que je clique sur le bouton "Envoi Mail" qui déclenche la macro : envoi_Feuille(), çà bugue sur la ligne 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub envoi_Feuille()
    Dim olapp As Outlook.Application
    avec le msg d'erreur suivant :
    Erreur de compilation : Type défini par l'utilisateur non défini.
    Lorsque je contrôle dans Visual Basic/Outils/Références/, Object Librairy est bien coché (j'ai fait une copie écran).

    çà ne fait celà uniquement lorsque je copie le module ainsi que les 3 feuilles dans mon fichier (base de données.xls).
    Si j'utilise le fichier joint au 1er msg, là tout fonctionne.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tu dois cocher la référence "Microsoft Outlook 11.0 Object Library".

  5. #5
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut
    Merci et bon W.E

  6. #6
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut
    Re,

    J'ai deux autres soucis dans le code à cet endroit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    '---------------------Nom du fichier à envoyer
    ActiveWorkbook.SaveAs AdresseRépertoire & "\" & "Class.xls"
     ' ou adresse si le nom est dans une cellule  Range("E2").Value & ".xls"
    ActiveWindow.Close
    et celui -ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    '---------------------Adresse de la pièce jointe
    msg.Attachments.Add Source:=AdresseRépertoire & "\" & "Class.xls"
     ' ou adresse si le nom est dans une cellule  Range("E2").Value & ".xls"
    Comment dois je procéder si je mets en E2 (déjà de quelle feuille ?) le nom du fichier à envoyer ?

    J'ai mis ceci mais çà ne fonctionne pas :

    1er code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.SaveAs AdresseRépertoire & "\" & Range("E2").Value & ".xls"
    ActiveWindow.Close
    2eme code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    '---------------------Adresse de la pièce jointe
    msg.Attachments.Add Source:=AdresseRépertoire & "\" & Range("E2").Value & ".xls"


    2eme incompréhension : j'ai modifié le code pour que je puisse envoyer jusquà 150 adresses comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim adresse(1 To 150)
                '----------------------Création de la liste d'adresses mail contenus de la ligne 2 à 151
    Set malist = Sheets("Envoi Mail").Range("A2:A151")
    Count = 1
    For Each Envoi In malist
    If Len(Envoi) Then adresse(Count) = Envoi: Count = Count + 1
    Next
                '----------------------Copie de la liste d'adresse dans une cellule vide exemple H1
    [H1] = Array(adresse(1) & "; " & adresse(2) & "; " & _
    adresse(3) & "; " & adresse(4) & "; " & adresse(5) & "; " & adresse(6), adresse(7), adresse(8), adresse(9), adresse(10))
    Bien que après , adresse(10)), je n'ai pas continué jusqu'à adresse(150)),
    celà fonctionne est ce normal ?


    Merci

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

Discussions similaires

  1. Envoi de mail Outlook à partir d'Excel
    Par Daejung dans le forum VBA Outlook
    Réponses: 8
    Dernier message: 19/12/2008, 23h37
  2. Envoi e-mail outlook avec access
    Par Jacques-Henri dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/11/2007, 20h19
  3. Réponses: 1
    Dernier message: 06/04/2007, 10h40
  4. [mail] Timeout sur envoi de mails en HTML
    Par NorthernLights dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 05/12/2006, 10h35
  5. [VBA-E] pb envois de mail outlook
    Par minoru dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/08/2005, 19h42

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