Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Envoi d'un mail excel

  • Initiateur de la discussion Initiateur de la discussion lematou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lematou

XLDnaute Occasionnel
bonjour,

en lisant ce forum j'ai récupéré une macro permettant d'envoyer un mail avec excel dont voici le code:

Sub envoimail ()
Dim adresse As String
Dim sujet As String
Dim Body As String
Dim Urlo As String
'je recupère les données provenant de la feuille de calcul
adresse = Range("B1")
sujet = Range("B2")
texte = Range("B3")
'je mets en forme la chaine
URLto = "mailto:" & adresse & " ?Subject=" & sujet & " & Body = " & Text
ActiveWorkbook.FollowHyperlink Address:=URLto
End Sub

Mais quand je l'active ,elle ouvre bien un mail avec l'adresse B1 que je souhaitais , puis elle met le sujet B2 mais le mail reste prêt à partir SANS le corps du message???
Sauriez-vous ce qu'il faut changer dans cette macro pour que cela fonctionne?
J'ai essayé beaucoup de choses sans succés
Merci de votre réponse.
Je précise que je suis débutant en VBA
 
Dernière édition:
Re : Envoi d'un mail excel

Bonjour Lematou, bonjour à tous,

Ton code légèrement modifié:

Code:
Sub envoimail()
Dim adresse As String
Dim sujet As String
Dim Texte As String
Dim Urlto As String
'je recupère les données provenant de la feuille de calcul
adresse = Range("B1")
sujet = Range("B2")
Texte = Range("B3")
'je mets en forme la chaine
Urlto = "mailto:" & adresse & "?Subject=" & sujet & "&Body=" & Texte
ActiveWorkbook.FollowHyperlink Address:=Urlto
End Sub

Quelques explications récupérées sur internet:

5- MAILTO avec "subject" et "body"

Dans la partie BODY, si vous souhaitez revenir à la ligne, utilisez %0A (0A avec 0 = zéro - parfois ne donne pas les mêmes résultats suivant les configurations (PC, Mac, Netscape ou IE.... ). Ici l'exemple fonctionne bien avec Outlook Express sous XP.
En noir gras = de "mailto" à "agréable." partie à insérer dans la zone de lien si vous utilisez un logiciel et si vous codez directement en HTML il faut alors reprendre tout le texte ci-après du lien.
En rouge = ? et & à placer sans espaces et %0A correspond à un interligne.
<a href="mailto:henry@aidenet.com?subject=j'ai besoin d'aide&body=URL : %0APRENOM : %0AVotre question : %0A%0ALe webmaster bénévole d'aidenet fait de son mieux pour vous être agréable.">henry</a>

@+

Gael
 
Re : Envoi d'un mail excel

bonjour lematou

Salut Gael 🙂 🙂

il y a quelques anées déja j'avais ceci qui ,je crois , fonctionne avec OutlookExpress sous windows XP

Code:
Sub envoimail()
    Dim HyperLien As String, Objet As String, Corps As String
    Objet = "L'objet du mail"
    Corps = "Le message"
    Corps = Application.WorksheetFunction.Substitute(Corps, vbCrLf, "%0D%0A")
    ad = "[EMAIL="tata@free.fr"]tata@free.fr[/EMAIL]"
    ' ou ad=range("la cellule ou est l'adresse")
    copie = "[EMAIL="tutu@free.fr"]tutu@free.fr[/EMAIL]"
    'ou copie= range("cellule ou est l'adresse en copie")
    HyperLien = "mailto:" & adresse & "?cc=" & copie
    HyperLien = HyperLien & "&Subject=" & Objet & " (à " & Time() & ")"
    HyperLien = HyperLien & "&Body=" & Corps
    ActiveWorkbook.FollowHyperlink HyperLien
End Sub
 
Re : Envoi d'un mail excel

Bonjour à tous,
J'ai oublié de préciser que j'avais XP+XL2003+OE6
Un grand merci à Gaêl et Pierrejean pour votre réponse , mais je n'ai pas su les mettre à l'oeuvre!

Pour Gaêl , je ne sais pas où je dois insérer ce qu'il me propose et que je n'identifie pas comme du VBA.

Et avec la macro de Pierrejean je n'arrive qu'à ouvrir un message OE mais avec l'adresse dans CC.
Par contre le corps du message reste vide??
Mais je continue à tester différentes solutions (de débutant)
Juste une chose je souhaite inserer une feuille nommée "Cursus" ou une plage nommée et pas forcément la feuille active ou j'ai le bouton déclancheur.
Alors j'ai fait ça:

Sub envoimail()
Dim adresse As String
Dim sujet As String
Dim Body As String
Dim Urlto As String
'je recupère les données provenant de la feuille de calcul
adresse = Range("B1")
sujet = Range("B2")
Ttexte = "CURSUS" ' c'est le nom de ma feuille.

' je mets en forme la chaine
Urlto = "mailto:" & adresse & " ?Subject=" & sujet & " & Body=" & Text
'cest cette ligne du dessus qui a une erreur
ActiveWorkbook.FollowHyperlink Address:=Urlto
End Sub

Si vous pouviez voir l'erreur ou les erreurs qui vous frappent....
Par contre, etant novice en tout, y compris en forum (utilisateur) je ne pensais pas recevoir une réponse aussi rapide. Merci
 
Re : Envoi d'un mail excel

Bonsoir Lematou, bonsoir Pierrejean,

Désolé, je me suis mal expliqué, la procédure est dans la partie code, c'est du VBA et c'est ta proc légèrement modifiée, je l'ai testée chez moi et ça marche très bien avec le corps du message.

La partie documentation était pour te confirmer la structure exacte de la chaîne finale. Un espace de trop ouun double "&" et ça ne marche pas comme il faut.

Recopie simplement le code et essaye.

@+

Gael
 
Re : Envoi d'un mail excel

Merci Gaël
effectivement ça marche, et j'ai fait comme tu as dit.
Mais l'adresse , l'objet et le corps du message sont écrit en dur dans la macro.
Or ce que je voudrais c'est que l'adresse soit prise à partir d'une cellule (A1) par exemple;
Que l'objet soit pris à partir d'une autre cellule.
Et le corps du message soit une feuille "nommée du classeur :exemple "feuille4"

Sub envoimail()
Dim adresse As String
Dim sujet As String
Dim Body As String
Dim Urlto As String
'je recupère les données provenant de la feuille de calcul
adresse = Range("[B1")
sujet = Range("B2")
texte = "Feuille4"
' c'est le nom de la feuille que je veux envoyer, pas celle sur laquelle j'ai le bouton de la macro.

'je mets en forme la chaine
Urlto = "mailto:henry@aidenet.com?subject=j'ai besoin d'aide&body=URL : %0APRENOM : %0AVotre question : %0A%0ALe webmaster bénévole d'aidenet fait de son mieux pour vous être agréable."
ActiveWorkbook.FollowHyperlink Address:=Urlto
End Sub

J'ai essayé de remplacer henry@aidenet.com par Range("B1") et j'ai erreur de compilation. En plus je sens bien que ça ne peut pas être ça.
Merci quand même. 🙂🙂
 
Re : Envoi d'un mail excel

Re,

Décidemment, je me suis encore mal expliqué.

Ne tiens pas compte de la partie documentation sur internet. Dans le code, j'ai corrigé la structure de la chaine "mailto..." en enlevant des espaces en trop ou inutile. Le code doit marcher tel quel sans aucune modif.

Donc, tu remplaces simplement ta macro initiale par ce code et tout doit être OK avec les données des range "B1", "B2" et "B3".

Essaye encore.

@+

Gael
 
Re : Envoi d'un mail excel

Bonjour à tous Bonjour Gaël et Pierrejean 🙂🙂

Donc j'ai repris mon code de départ et je l'ai comparé avec celui proposé plus haut par Gaël ET J'AI COMPRIS qu'il y avait des différences de syntaxe....Comme me le disait Gaël. Maintenant çà marche au poil. j'ai bien l'adresse en B1, L'objet en B2 et le corps du message en B3.Donc un grand merci à tous les deux car j'ai bidouillé celle de Pierre jean pour sortir le CC.

Mais voilà!!! ce que je cherche à faire , ET QUE JE NE TROUVE NULLE PART? c'est que le corps du message soit une feuille (active ou plutôt nommée ou appelée) ou alors mieux encore :une plage de cellules; Par exemple ("A1;A10") et là je suis conincé.

Sub Macro1()
Dim Adresse As String
Dim Sujet As String:
Dim Texte As String
Dim Urlo As String
Adresse = Range("B1")
Sujet = Range("B2")
Texte = Range("B3") ' là j'aimerais avoir un plage ("A1;A10") 🙂mais cela ne marche pas.
URLto = "mailto:" & Adresse & "?Subject=" & Sujet & "&Body=" & Texte
ActiveWorkbook.FollowHyperlink Address:=URLto
End Sub

A bientôt. Et merci à vous deux
 
Re : Envoi d'un mail excel

Bonsoir lematou, bonsoir pierreJean,

Tu peux essayer un truc du style:

Code:
Texte = ""
Texte = Cells(7, 3).Value & Cells(7, 4).Value & Cells(7, 5).Value & "%0A"
Texte = Texte & Cells(8, 3).Value & Cells(8, 4).Value & Cells(8, 5).Value & "%0A"
Texte = Texte & Cells(9, 3).Value & Cells(9, 4).Value & Cells(9, 5).Value & "%0A%0A"
Texte = Texte & "Cordialement%0A"
Texte = Texte & "Gael"

puis tu insère la variable texte dans le corps du message. J'ai essayé, ça marche mais c'est un peu lourd.

@+

Gael
 
Re : Envoi d'un mail excel

Bonjour à tous et à Gaël🙂🙂

Voilà, je souhaiterais pouvoir mettre aussi dans cette macro une adresse en " copie" en CC.
J'ai essayé plusieurs trucs de PierreJean mélangés à ceux de gaël mais je me retrouve (au mieux) avec les deux adresses dans la barre adresse de OUTLOOK EXPRESS.

Sub envoimaill()
Dim adresse As String
Dim sujet As String
Dim Texte As String
Dim Urlto As String

adresse = Range("B1")
sujet = Range("B2")
Texte = Range("B3")' mais là j'ai mis plusieurs cellules et ça marche
copie = Range("B4")

Urlto = "mailto:" & adresse & copie & "?Subject=" & sujet & "&Body=" & Texte
ActiveWorkbook.FollowHyperlink Address:=Urlto
End Sub

Une personne peut me renseigner sur l'erreur que je commet?

Merci beaucoup et bon dimanche à tous.
 
Re : Envoi d'un mail excel

Merci PierreJean🙂🙂

J'avais trouvé une solution pour avoir mon CC (assez grâce à toi d'ailleurs) mais j'ai fait plus compliqué. Enfin ça marche. Je ferai plus propre dès que je saurai me débrouiller un peu.
J'ai une autre question???
Comment faire pour que dans le corps du message, je puisse avoir des mots en gras et d'autres en rouge, voire les deux.JE VEUX DIRE QUE OUTLOOK EXPRESS NE SUIS PAS LES FORMATS EXCEL.
Je précise que je n'envoie pas en piece jointe. Voilà mon code un peu inspiré par qui vous savez:en plus compliqué:

Sub NOM()
' macro censée ouvrir le message nom à envoyer

Sheets("NOM").Select
Dim HyperLien As String, Objet As String, corps As String
Objet = Range("A2")
corps = ""
corps = corps & Cells(4, 1).Value & "%0A"
corps = corps & Cells(5, 1).Value & "%0A"
corps = corps & Cells(6, 1).Value & "%0A%0A"

corps = corps & Cells(15, 1).Value & "%0A"
corps = corps & Cells(16, 1).Value & "%0A"
corps = corps & Cells(17, 1).Value & "%0A"
corps = corps & Cells(18, 1).Value & "%0A"
corps = corps & Cells(19, 1).Value & "%0A"
corps = Application.WorksheetFunction.Substitute(corps, vbCrLf, "%0D%0A")
adresse = Range("F1")
Copie = Range("F2")
HyperLien = "mailto:" & adresse & "?cc=" & Copie' pour le CC j'ai fait ça
HyperLien = HyperLien & "&Subject=" & Objet & " (à " & Time() & ")"
HyperLien = HyperLien & "&Body=" & corps
ActiveWorkbook.FollowHyperlink HyperLien
Sheets("TABLEAU SIMPLE").Select
End Sub

Merci beaucoup pour l'aide que je reçois.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
1 K
Réponses
10
Affichages
792
Réponses
4
Affichages
757
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…