Macro Excel pour envoi d'un email [Résolu]

Messages postés
6
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
14 juin 2010
- - Dernière réponse : jordane45
Messages postés
25780
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2019
- 14 juin 2010 à 14:56
Bonjour,

J'essaye de creer uen macro pour envoyer un email (outlook 2003) avec le contenu de certaines cellules (si elles ne sont pas vides) de la page de mon fichier Excel (Exxcel 2003).

Je recois chaque fois un message d'erreur pour la ligne:

Msg = Msg & Range("b1:c100").Select

Que j'ai ensuite changée en (j'ai aussi essayer de nommer "liste" la zone de texte à envoyer):

Msg = Worksheets("EDI GATE OUT EXP").Shapes("b1:c60").TextFrame.Characters.Text

Voici la macro complete:


[i]Sub Macro2()
'
' Macro2 Macro
' Macro recorded 10-06-2010 by Nathalie
'

'
Sheets("EDI GATE IN EMPTY").Select
Range("B1").Select
Dim MailAd As String
Dim Msg As String
Dim Subj As String
Dim URLto As String
MailAd = Range("f2")
Subj = Range("f4")
Msg = Msg & Range("b1:c100").Select
URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
ActiveWorkbook.FollowHyperlink Address:=URLto
End Sub
Sub Macro2()/i


Mais ca ne passe toujours pas. Merci d'avance pour votre aide.

N.
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
25780
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2019
312
3
Merci
Bonjour,
en fait, ma variable "TEXTE" correspondait à MSG dans ton code.. il faut que tu écrives :
J'ai réécrit le code .. teste le

Sub Macro2()

    Sheets("EDI GATE IN EMPTY").Select
    Range("B1").Select
    Dim MailAd As String
    Dim Msg As String
    Dim Subj As String
    Dim URLto As String
    Dim Maplage As Range
        Set Maplage = Range("B1:B10") 'definition de la plage contenant le Message

    MailAd = Range("f2")
    Subj = Range("f4")
    
   'boucle qui récupère le texte du message 
   For Each Cell In Maplage 'dans chaque cellule de MaPlage...
        Msg Msg & " " & Cell.Value ' Message Message + Valeur de ma cellule
    Next 'Suite de la boucle
    
    URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
    ActiveWorkbook.FollowHyperlink Address:=URLto
    Sheets("GATE OUT EXP").Select
    Range("a3").Select
End Sub



Cordialement,
Jordane,

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
25780
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2019
312
0
Merci
Bonjour,
le code :
Range("b1:c100").Select 
ne renvoie pas le contenu de ta plage.. mais la Selectionne

Pour récupérer le contenu de ta plage, tu peux utiliser le code :
Dim Maplage As Range
Dim Texte As String

Set Maplage = Range("B1:B10")
For Each Cell In Maplage
Texte = Texte & " " & Cell.Value
Next


Cordialement,
Jordane,
Commenter la réponse de jordane45
Messages postés
6
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
14 juin 2010
0
Merci
Bonjour Jordane,

Et merci déjà pour ta réponse.

J'ai donc essayé de l'inclure dans la Macro, ce qui me donne ceci:

Sub Macro2()

    Sheets("EDI GATE IN EMPTY").Select
    Range("B1").Select
    Dim MailAd As String
    Dim Msg As String
    Dim Subj As String
    Dim URLto As String
    Dim Maplage As Range
    Dim Texte As String
    MailAd = Range("f2")
    Subj = Range("f4")
    Msg Msg & Set Maplage Range("B1:B10")
    For Each Cell In Maplage
    Texte = Texte & " " & Cell.Value
    URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
    ActiveWorkbook.FollowHyperlink Address:=URLto
    Sheets("GATE OUT EXP").Select
    Range("a3").Select
End Sub


Mais ca ne passe toujours pas et je ne réussis toujours pas à localiser le problème. Peux-tu m'aider stp?

N.
Commenter la réponse de tankya
Messages postés
6
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
14 juin 2010
0
Merci
Ca marche! Du tonnerre!

Merciiiiii!!!
Commenter la réponse de tankya
Messages postés
6
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
14 juin 2010
0
Merci
...oups!

J'ai encore un tout petit souci, un détail!
Je pensais que le contenu de chaque cellule occuperait une ligne de mon message (donc renvoi à la ligne après chaque contenu de cellule) mais là, la macro me donne toutes informations de ma plage de données en un seul bloc.

Tu as une solution s'il te plait?

N.
Commenter la réponse de tankya
Messages postés
25780
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2019
312
0
Merci
re

Pour faire un retour à la ligne il faut utiliser l'instruction "vbCrLf"
ce qui donne dans ton code (pour la partie message)


   'boucle qui récupère le texte du message 
   For Each Cell In Maplage 'dans chaque cellule de MaPlage...
        Msg Msg & vbCrLf & Cell.Value ' Message Message + Valeur de ma cellule
    Next 'Suite de la boucle



voili voilou

...
N'hésites pas si tu as encore des soucis ^^

Cordialement,
Jordane,
Commenter la réponse de jordane45
Messages postés
6
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
14 juin 2010
0
Merci
Re-bonjour Jordane,

Malheureusement j'ai modifié la macro comme tu l'as montré mais ca ne change rien; le texte du message est toujours en un seul bloc.

Y a-t-il une autre facon de procéder?

Slts,

T.
Commenter la réponse de tankya
Messages postés
25780
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2019
312
0
Merci
hello,

en effet, y'avais un ptit souci

en ajoutant ce code => "%0D%0A" ça fonctionnera mieux

   'boucle qui récupère le texte du message
   For Each Cell In Maplage 'dans chaque cellule de MaPlage...
        Msg Msg & "  " & Cell.Value & "%0D%0A" ' Message Message + Valeur de ma cellule
    Next 'Suite de la boucle



Cordialement,
Jordane,
Commenter la réponse de jordane45
Messages postés
6
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
14 juin 2010
0
Merci
D'accord, je vois, merci.

Cependant maintenant quand je lance la macro, elle bug sur la ligne (Run-time error '5': Invalid procedure call or agreement)

ActiveWorkbook.FollowHyperlink Address:=URLto


Avant il n'y avait pas ce problème; le message était bien créé et ouvert.

Sais-tu d'ou vient le problème?

Slts,

T.
Commenter la réponse de tankya
Messages postés
25780
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2019
312
0
Merci
je ne vois pas d'où vient ton problème.
je viens de retester le code
Sub Envoi_Mail()

    Sheets("EDI GATE IN EMPTY").Select
    Range("B1").Select
    Dim MailAd As String
    Dim Msg As String
    Dim Subj As String
    Dim URLto As String
    Dim Maplage As Range
        Set Maplage = Range("B1:B10") 'definition de la plage contenant le Message

    MailAd = Range("f2")
    Subj = Range("f4")
    
     'boucle qui récupère le texte du message
   For Each Cell In Maplage 'dans chaque cellule de MaPlage...
        Msg Msg & "  " & Cell.Value & "%0D%0A" ' Message Message + Valeur de ma cellule
    Next 'Suite de la boucle
    
    URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
    ActiveWorkbook.FollowHyperlink Address:=URLto
    Sheets("GATE OUT EXP").Select
    Range("a3").Select
End Sub



et je ne rencontre aucun souci.

Ton Outlook (ou autre logiciel de méssagerie) est ouvert ?
Tu es bien dans ton classeur lorsque tu lances le code ?
As-tu essayé en mode pas à pas pour voir d'où viendrait le pb ?(les valeurs de tes variables sont-elles bonnes ?)



Cordialement,
Jordane,
Commenter la réponse de jordane45