Rajout de contenu dans un mail généré depuis excel

Brigitte

XLDnaute Barbatruc
Bonsoirr,

Je yoyote... il me semblait avoir posté ma question il y a peu et je ne la vois pas dans la liste, quelle farce me joue mon serveur ?

La revoici donc :

Dans un de mes fichiers, une macro copie la feuille active (collage spécial valeur) puis ouvre outlook et prépare l'envoi avec cette copie en pièce jointe (avec l'objet).

J'aimerais également avoir un texte pré saisi dans ce message (et un lien internet à l'intérieur, pour info).

Voici la macro (écrite par un de mes xldiens préférés, et améliorée par d'autres), où et comment rajouter le petit blabla ?

Code:
Sub MacroMail()
'Autant prendre de bonnes habitudes : en VBA, on déclare toujours les variables utilisées !
Dim AccuseReception As Boolean
Dim Sujet As String
      '
      Sheets("FICHE COMMUNICATION").Select
    Sheets("FICHE COMMUNICATION").Copy Before:=Sheets(8)
    Range("A1:AA44").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C11").Select
    Sheets("FICHE COMMUNICATION (2)").Select
    ActiveWorkbook.Windows(1).SelectedSheets.Copy
      AccuseReception = True
      Sujet = "Demande de communication de boîte archives auprès ADLA"
      ActiveWorkbook.SendMail "", Sujet, AccuseReception
      ActiveWorkbook.Close False
End Sub

Texte à rajouter :

Message pour X : penser à aller sur ce site : afin de remplir le formulaire de demande de recherche administrative.

Merci à vous.
 

Brigitte

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Merci Kllmoon,

Mais... j'ai déjà fait la recherche ici, sur google...

Ce que je voudrais, vu mon niveau, c'est en ne changeant rien de ma macro qui marche nickel, rajouter un petit texte (tjs le même).

Donc savoir que mettre, où et comment....

J'ai tenté plein de choses, en vain... Il me faut une lumière.

Car même quand j'essaie corps, body, text... je ne suis pas sûre de BIEN ESSAYER... faut il déclarer la variable avant, comment... à quel endroit mettre corps, body, text... tu vois un peu.
 

kllmoon

XLDnaute Occasionnel
Re : Rajout de contenu dans un mail généré depuis excel

Je voudrais bien t'aider mais au boulot on a nos emails en format web alors pas possible de tester! En parlant de boulot, mon lunch est terminé, faut que je retourne.

Bonne chance Brigitte.

Mon reflexe serait d'essayer comme ceci.

Code:
Sub MacroMail()
'Autant prendre de bonnes habitudes : en VBA, on déclare toujours les variables utilisées !
Dim AccuseReception As Boolean
Dim Sujet As String
Dim momsg As String
      '
      monmsg = "ton texte"
      Sheets("FICHE COMMUNICATION").Select
    Sheets("FICHE COMMUNICATION").Copy Before:=Sheets(8)
    Range("A1:AA44").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C11").Select
    Sheets("FICHE COMMUNICATION (2)").Select
    ActiveWorkbook.Windows(1).SelectedSheets.Copy
      AccuseReception = True
      Sujet = "Demande de communication de boîte archives auprès ADLA"
      Textbody = monmsg
      ActiveWorkbook.SendMail "", Sujet, Textbody, AccuseReception
      ActiveWorkbook.Close False
End Sub
Sinon je ferais une révision du code, createobject et with object .To , .Sujet , .Textbody , etc
 
Dernière édition:

Brigitte

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Bonsoir,

Et avant tout merci.

Malheureusement, en effet, ca ne marche pas... Même en appliquant à la lettre tes consignes.

Tant pis. On verra si qqun d'autre a une idée.

Je crois que le code était d'Hervé, mais comme plein d'autres m'ont aidée, Gaël, Roger, etc... je ne sais plus à qui je pourrais adresser ma requête. Car celui qui a créé ce code saurait peut être rajouter un petit corps de texte.

Bonne soirée.
 

Pierrot93

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Bonsoir Brigitte, Kilmoon

A priori, à ma connaissance la méthode "sendmail" n'accepte pas d'argument "texte", elle n'accepte que "Recipients", "Subject" et ReturnReceipt.

Pour effectuer ce que tu veux faire, il faut procéder autrement. Par cela tout dépend du logiciel utilisé pour gérer ta messagerie. "outlook", "outlook express" ou autres... A voir... Il y a des exemple donnés par MichelXLD dans le wiki.

Si tu es toujours en panne, et si je connais ta messagerie, je regarderais demain matin...

bonne soirée.
@+
 

Brigitte

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Bonsoir,

Un de mes sauveurs éternels passe par là...

Ma messagerie : outlook 2003

Le souci c'est que la macro marche nickel et que ce fichier est à disposition de plein de gens, je voulais juste m'y mettre (car le message en fait m'est envoyé par les gens) un petit mémo... je crois que je le mettrai dans le titre du message, s'il faut tout changer.

Mais bon si tu veux regarder, je veux bien faire un essai, seulement ne t'embête pas trop tout de même. Je croyais que c'était tout simple, n'y connaissant rien, hihi.

Bisous, Pierrot.
 

Pierrot93

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Bonjour Brigitte,

ci-dessous le code modifié, mais attention, par rapport à ton code précédent, il y a une contrainte, à savoir l'adresse du destinataire est "écrit" dans la macro, mais bon, on pourrait également la chercher dans le classeur, à voir.... J'ai placé le code que j'ai rajouté, entre 2 lignes d'étoiles...

Code:
Sub MacroMail()
'Autant prendre de bonnes habitudes : en VBA, on déclare toujours les variables utilisées !
Dim AccuseReception As Boolean
Dim Sujet As String
'***********************************************************************************
'***********************************************************************************
Dim appOutlook As Object, message As Object, MaPJ As Object
Dim myRecipient As Object, email As String
'************************************************************************************
'************************************************************************************

Sheets("FICHE COMMUNICATION").Select
Sheets("FICHE COMMUNICATION").Copy Before:=Sheets(8)
Range("A1:AA44").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("C11").Select
Sheets("FICHE COMMUNICATION (2)").Select
ActiveWorkbook.Windows(1).SelectedSheets.Copy

'************************************************************************************
'************************************************************************************
Set appOutlook = CreateObject("outlook.application")
Set message = appOutlook.CreateItem(olMailItem)
'adresse du destinataire à modifier
email = "Emaildudestinataire@yahoo.fr"
Set MaPJ = message.Attachments
'joint le classeur où se trouve la macro
'pour un autre classeur, indiquer le chemin complet.
MaPJ.Add ThisWorkbook.FullName

With message
    .ReadReceiptRequested = True
    .Subject = "Demande de communication de boîte archives auprès ADLA"
    .Body = "Bonjour," & vbLf & vbLf & "Penser à aller sur ce site : " & vbLf _
    & "http://www.excel-downloads.com/forum/newthread.php?do=newthread&f=7" & vbLf _
    & "afin de remplir le formulaire de demande de recherche administrative." & vbCr & _
    "Cordialement," & vbCr & vbCr & _
    "Brigitte."
    .Recipients.Add (email)
    .Send
End With
'************************************************************************************
'************************************************************************************

ActiveWorkbook.Close False
End Sub

bonne journée
@+

Edition : manquait une déclaration de variable
 
Dernière édition:

Brigitte

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Bonjour,

Merci Pierrot, ca marche... MAIS

Ca n'envoie pas la copie de la fiche copiée/collée spéciale valeurs, mais tout le classeur.

Aurais tu une idée ?

Sinon, je préfère dans l'ancienne méthode le fait que la personne visualise le mail avec la pièce jointe et fasse "envoyer"... Car là ca fait des messages successifs d'autorisation qui vont faire peur aux utilisateurs.

Je suis embêtante, je sais... Mais sinon t'embête pas, je vais garder l'ancienne méthode...

Bisous et merci.
 

Pierrot93

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Re Brigitte

Pour envoyer uniquement la feuille copiée plutôt que le classeur, il faudrait créé un nouveau classeur avec cette même feuille, et faire un "enregistrer sous" et joindre le nouveau classeur, cela doit être réalisable aisement.

par contre pour :
Sinon, je préfère dans l'ancienne méthode le fait que la personne visualise le mail avec la pièce jointe et fasse "envoyer"...
perso, vois pas trop de solution....

et pour éviter ceci :
Car là ca fait des messages successifs d'autorisation qui vont faire peur aux utilisateurs
il me semble qu'il existe sur internet un exécutable ou une macro complémentaire, je ne sais plus trop, qui empêche les messages d'alerte...

Sinon, bah, pas d'autre idée sur le sujet.

Te souhaitant un bon après midi
@+
 

Brigitte

XLDnaute Barbatruc
Re : Rajout de contenu dans un mail généré depuis excel

Re,

Oui je crois qu'on va laisser tomber.

Sinon, pour répondre à tes interrogations ou apporter un éclairage :

- La macro existante copie la feuille "communication" dans ledit classeur puis celle-ci se copie dans un nouveau classeur qui sera la pièce jointe

- impossible d'installer quoi que ce soit sur les postes, car les utilisateurs susceptibles d'envoyer ce mail sont nombreux et non identifiables (fichier sous intranet à portée de tous)

Tant pis, bien dommage, mais tant pis, en tout cas, mille mercis et désolée que tu aies bossé pour rien. Ta macro marche, on sait jamais elle me servira peut être un jour ou ici pour qqun d'autre. Moi je l'ai gardée dans mon classeur... au cas où !

Bises
 

Neryn

XLDnaute Nouveau
Re : Rajout de contenu dans un mail généré depuis excel

bonjour,
J'ai utiliser ce code, grace a l'aide du forum ^^, pour envoyer un mail dans ton genre sur double click sur une cellule.

Dans cette macro un texte prédéfinie est possible :)

Aprse je suis incapable de l'adapter pour ton cas précis mais tu y arriveras peut être ou un des eternels genie de ce forum devrait y arriver :p

(Le corps de la macro est de Thierry, modifier pour mon cas a l'époque par trop de monde pour que je me souvienne de leurs noms désolé :) )

En ésperant que ca puisse t'aider et que je ne sois pas trop hors sujet.^^

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Mailto = "adresse@destinataire.fr"
MailCC = "copie@destinataire.fr"
CorpsMessage = "Texte test"
ObjetMessage = "Réservation de la salle: " & Range("A" & Target.Row).MergeArea(1)
If Target.Value = "LIBRE" Then
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
    With OLMail
          .To = Mailto ' Destinataire
          .CC = MailCC ' Copie
          .Importance = olImportanceNormal
          .Subject = ObjetMessage ' Sujet
          .Body = CorpsMessage ' Message
          '.Attachments.Add CheminDestination & NouveauNomFichier ' Pièce jointe
          '.Categories = "Daily"
          '.OriginatorDeliveryReportRequested = True ' Accusé de dépôt
          '.ReadReceiptRequested = True ' Accusé de lecture
         ' .Send '<<<<<<<<<<<<<<<Pour envoyer directement
         .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
    End With
End If
Cancel = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 678
Membres
105 508
dernier inscrit
Albator