Macro Excel pour envoi d'un email

Résolu
tankya Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 14 juin 2010 - 10 juin 2010 à 13:29
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 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.

10 réponses

jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 344
11 juin 2010 à 11:40
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,
3
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 344
10 juin 2010 à 18:40
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,
0
tankya Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 14 juin 2010
11 juin 2010 à 11:22
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.
0
tankya Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 14 juin 2010
11 juin 2010 à 12:43
Ca marche! Du tonnerre!

Merciiiiii!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tankya Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 14 juin 2010
11 juin 2010 à 16:11
...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.
0
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 344
11 juin 2010 à 16:34
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,
0
tankya Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 14 juin 2010
14 juin 2010 à 11:29
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.
0
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 344
14 juin 2010 à 12:06
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,
0
tankya Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 14 juin 2010
14 juin 2010 à 14:27
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.
0
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 344
14 juin 2010 à 14:56
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,
0
Rejoignez-nous