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 :

Amélioration du code de l'envoi d'une feuille par mail via LotusNotes


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut Amélioration du code de l'envoi d'une feuille par mail via LotusNotes
    Bonjour,

    Aprés quelques recherches sur les macro permettant d'envoyer des feuilles excel par mail, voici le code que j'ai écrit dans mon fichier
    J'envoi une feuille d'un fichier excel par mail avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Dest As String
    Dest = Range("MACRO!J3").Value
    Worksheets("ALVEA").Copy
    Application.DisplayAlerts = False
    ActiveWorkbook.SendMail Recipients:=Dest, _
    Subject:="Liste prix date d'enlévement : ", _
    ReturnReceipt:=False
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
    Mon probleme est que le fichier envoyé par mail porte un nom aléatoire, je voudrais qu'il porte toujours le meme nom et enfin est t'il possible d'inclure un message dans le corps du mail?

    Merci pour votre aide.


    Edit:

    J'ai cherché partout mais visiblement il n'est pas possible d'inclure du texte dans le corps d'un mail avec la fonction sendmail.... c'est possible qu'avec Outlook mais évidement je suis sous Lotus

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    Alors je viens de trouver un code qui permet d'envoyer un mail avec Lotus Note qui fonctionne!!!

    Par contre je ne vois pas comment mettre mon fichier excel en piece jointe dans le mail.

    La variable "EmbedObj" sert à priori à inclure une piece jointe mais je ne vois pas comment y attacher mon fichier.

    Voici le 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
    Sub SendNotesMail() 
     
    On Error Resume Next 
     
     
        Dim Maildb As Object 'The mail database 
        Dim UserName As String 'The current users notes name 
        Dim MailDbName As String 'THe current users notes mail database name 
        Dim MailDoc As Object 'The mail document itself 
        Dim AttachME As Object 'The attachment richtextfile object 
        Dim Session As Object 'The notes session 
        Dim EmbedObj As Object 'The embedded object (Attachment) 
     
        Set Session = CreateObject("Notes.NotesSession") 
        UserName = Session.UserName 
        MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf" 
        'Open the mail database in notes 
        Set Maildb = Session.GetDatabase("", MailDbName) 
         If Maildb.IsOpen = True Then 
              'Already open for mail 
         Else 
     
         Maildb.OPENMAIL 
     
         End If 
        'Set up the new mail document 
        Set MailDoc = Maildb.CreateDocument 
        MailDoc.Form = "Memo" 
        MailDoc.Subject = "Envoi Automatique ......" 
        MailDoc.body = "message....."
        MailDoc.SAVEMESSAGEONSEND = saveit 
     
     
        'Send the document 
        MailDoc.PostedDate = Now()  
        MailDoc.Send 0, "306xshdi@xxxxxxx.fr" 
        'Clean Up 
        Set Maildb = Nothing 
        Set MailDoc = Nothing 
        Set AttachME = Nothing 
        Set Session = Nothing 
        Set EmbedObj = Nothing 
    End Sub

    EDIT:
    j'ai essayé de rajouter une ligne genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailDoc.Attachment = EmbedObj
    Il ne crie pas, mais ça ne fonctionne pas.

  3. #3
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour Alex,

    regarde ici

    Cordialement.

    Godz.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    Merci Godzesla,

    Alors dans mon code juste avant l'envoi j'ai rajouté ce bout de code par rapport à ton lien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Attachment <> "" Then
            Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
            Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
            MailDoc.CREATERICHTEXTITEM ("Attachment")
        End If
    Par contre le niveau de ce code d'envoi de mail par Lotus Note dépasse largement mon niveau en VBA, je ne comprends pas comment lui dire que la piéce jointe (Attachement si j'ai bien compris) est mon fichier Excel.

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Citation Envoyé par alex830001 Voir le message
    Merci Godzesla,

    Par contre le niveau de ce code d'envoi de mail par Lotus Note dépasse largement mon niveau en VBA, je ne comprends pas comment lui dire que la piéce jointe (Attachement si j'ai bien compris) est mon fichier Excel.
    Re,

    facile. Après avoir sauvé ton fichier (s'il y a lieu), tu initialise la variable Attachement avec le fullname de ton classeur.

    le code devient donc quelquechose comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Attachment = thisworkbook.fullname
    If Attachment <> "" Then
            Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
            Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
            MailDoc.CREATERICHTEXTITEM ("Attachment")
        End If
    NB : je ne comprends pas non plus tout à ce code mais je sais qu'il fonctionne.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    Oulala ça marche!!!! merci beaucoup, je vais pouvoir allez en épater plus d'un avec ma macro la

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    J'essai maintenant de transmettre le mail à plusieurs destinataires, j'ai donc rajouté ceçi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim dest as String
    dest = Sheets("MACRO").Cells(1, 10).Value & ", " & Cells(4, 10).Value
    (Adresse donc en cellule 1,10 et 4,10.)

    Puis lors de l'envoi , j'ai remplacé la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailDoc.Send 0, "moi@taratata.fr"
    par:

    ça envoi le mail au premier de la liste mais pas au suivants...

  8. #8
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut


    pense à enlver le résolu si ça ne l'est plus.

    je regarde, un instant, j'ai eu la même chose et je dois avoir la parade quelquepart.

  9. #9
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Voilà,

    j'ai trouvé.
    Il faut renseigner une table au lieu d'un string avec des virgules commes séparateurs.

    Donc tu dois transformer ton string en table (via split par exemple).

    j'ai une version moche, qui fait la même chose, car à l'époque je ne connaissais pas split. mais elle fonctionne.

    La voici, à prendre pour ce qu'elle vaut.

    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
     
        'Split recipient list
        length = Len(Recipient)
        idx = 0
        off_out = 1
        Start = 1
        For off_in = 1 To Len(Recipient)
     
           If (off_in = Len(Recipient)) Then
              recip(idx) = Mid(Recipient, Start, off_in - Start + 1)
              idx = idx + 1
            End If
           If (Mid(Recipient, off_in, 1) = ",") Then
              recip(idx) = Mid(Recipient, Start, off_in - Start)
              idx = idx + 1
              Start = off_in + 2
            End If
        Next
     
     
        Set MailDoc = Maildb.CREATEDOCUMENT
        MailDoc.Form = "Memo"
        MailDoc.sendto = recip
    A+

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    Super, merci beaucoup pour ton aide!

    j'ai utilisé split, je ne connaissait pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim monTab() As String
     
    monTab = Split(dest, ",")
    et puis donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailDoc.Send 0, monTab()

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

Discussions similaires

  1. [XL-2013] Code VBA pour envoi d'une alerte échéance dans une bal Yahoo
    Par mwasikitoko dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/03/2015, 15h56
  2. [XL-2010] Envoyer une feuille par mail outook
    Par yoyo-tns dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/10/2013, 13h21
  3. [XL-2010] Envoi d'une plage par mail
    Par joe.levrai dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2013, 09h39
  4. Envoi d'une feuille par mail
    Par yjouin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2007, 10h37
  5. Réponses: 1
    Dernier message: 15/07/2005, 11h21

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