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 :

Envoi d'un mail via excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Envoi d'un mail via excel
    Bonjour à tous.

    Je suis en train de créer une feuille XLS pour le boulot.
    Cette feuille est un compte rendu d'activité.

    J'ai besoin sur cette feuille d'ajouter un bouton me permettant d'envoyer un email au client dont l'adresse email est dans la cellule : E13, le sujet dans E14, et le message sur la plage de cellule : a94:f105.

    J'arrive parfaitement à envoyer mon mail si le message est simplement sur la cellule : A94 avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub EnvoiUnMail()
    Dim MailAd As String
    Dim Msg As String
    Dim Subj As String
    Dim URLto As String
    MailAd = Range("E13")
    Subj = Range("E14")
    Msg = Msg & Range("A94")
    URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
    ActiveWorkbook.FollowHyperlink Address:=URLto
    End Sub
    Cependant j'ai vraiment besoin que mon message contienne toutes les informations qui se trouvent de la cellule a94 : f105. J'ai alors tout bêtement écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub EnvoiUnMail()
    Dim MailAd As String
    Dim Msg As String
    Dim Subj As String
    Dim URLto As String
    MailAd = Range("E13")
    Subj = Range("E14")
    Msg = Msg & Range("A94:F105")
    URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
    ActiveWorkbook.FollowHyperlink Address:=URLto
    End Sub
    Mais lorsque je clique sur mon bouton, j'ai une erreur de script et le débugueur m'indique cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msg = Msg & Range("A94:F105")
    Je ne suis pas un spécialiste script sous excel... Pouvez-vous éclairer ma lanterne ?

    Merci par avance,

    Au plaisir.

  2. #2
    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,

    une solution différente est de sauver ta plage ("A94:F105") seule dans un fichier excel nouveau et attacher ce nouveau fichier excel à ton email plutot que d'essayer de mettre ton range dans le corps de ton email.

    Il y a quoi dans ton range ?
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Godzestla Voir le message
    Bonjour,

    une solution différente est de sauver ta plage ("A94:F105") seule dans un fichier excel nouveau et attacher ce nouveau fichier excel à ton email plutot que d'essayer de mettre ton range dans le corps de ton email.

    Il y a quoi dans ton range ?

    Merci pour ta réponse !

    Dans mon range il y a un recap de certaines données de ma feuillle.
    Exemple :
    Nom du client =A3
    Email du client =E13

    Puis un texte que j'écris manuellement pour un compte rendu d'activité.

    J'ai bien pensé à mettre la feuille en pièce jointe, mais cette solution n'est pas envisageable pour différentes raisons (notamment technique)

    Merci

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Pour un cas similaire j'ai utiliser une variable que j'avais appelé MyText que j'ai défini comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyText = Range("A94") & " " & Range ("A95")
    Etc

    A toi de voir en fonction de ce que tu veux de prévoir des retour à la ligne ou de supprimer les espaces, ...

    Il y a surement mieux mais ca dépanne.
    N'oubliez pas le si votre problème est solutionné.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Fvandermeulen Voir le message
    Bonjour,
    Pour un cas similaire j'ai utiliser une variable que j'avais appelé MyText que j'ai défini comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyText = Range("A94") & " " & Range ("A95")
    Etc

    A toi de voir en fonction de ce que tu veux de prévoir des retour à la ligne ou de supprimer les espaces, ...

    Il y a surement mieux mais ça dépanne.
    Hey merci, ça fonctionne ! En attendant une meilleure solution je vais opter pour ce système.. par contre : comment tu fais pour avoir des retours à la ligne, des espaces,... ?

    Tidams

  6. #6
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    J'utilise les 'Chr', là aussi je sais qu'il y a mieux mais les habitudes sont difficiles à changer...Ci-dessous un example avec espace et mise à la ligne J'ai mis un msg box pour voir le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyText = Range("a94") & " " & Range("b94") & Chr(10) & Chr(13) & _
             Range("a95") & " " & Range("b95")
    MsgBox (MyText)
    Attention les espaces avant et après les "&" sont imporants.

    Bonne continuation.
    N'oubliez pas le si votre problème est solutionné.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Mon msgbox fonctionne bien : retour à la ligne, espace,... mais une fois dans le client de messagerie, toutes les données se mettent à la suite sans prendre en considération le formatage demandé

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Dans ce cas, voici une autre methode (avec outlook), tu verras qu'elle permet la mise en page du texte avec la méthode Chr.
    Dans l'exemple, il y a une pièce jointe, je le laisse ça pourra peut-être te servir plus tard.

    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
    Sub EnvoiFichier()
     
      ' ENVOI PAR E-MAIL DU FICHIER :
     
      Dim MonOutlook As Object
      Dim MonMessage As Object
     
      Monfichier = "" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ""
      'défini le fichier à mettre en pièce jointe
     
      Set MonOutlook = CreateObject("Outlook.Application")
      Set MonMessage = MonOutlook.createitem(0)
      MonMessage.to = Range("e13") 'Attention le lien hypertexte doit être supprimé dans la cellule de ref. (dans ton cas e13
      MonMessage.Cc = 
      MonMessage.Attachments.Add Monfichier 'supprimer cette ligne si pas de pièce jointe
      MonMessage.Subject = Range("e14")
      Corps = "Bonjour,"
      Corps = Corps & Chr(13) & Chr(10)
      Corps = Corps & range("a94")
    'Tu peux multiplier la ligne du dessus autant que nécessaire pour avoir le texte que tu désire
      MonMessage.body = Corps
      MonMessage.send
      Set MonOutlook = Nothing
    End Sub
    J'espère que cette fois ce sera OK.
    N'oubliez pas le si votre problème est solutionné.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Merci pour tout ! ca fonctionne !

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Problème résolu?

    Bouton , en bas de discussion.

    Merci
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. envoi auto de mail via outlook, adresse dans un excel + pj
    Par delta07 dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 11/06/2015, 14h36
  2. Envoi Mail via Excel
    Par isa0144 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/07/2014, 23h37
  3. [XL-2010] Envoi mail via excel
    Par jul2012 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 18/12/2012, 13h53
  4. [XL-2003] Envoi mail via excel: texte ne s'affiche pas
    Par chrisssou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/09/2012, 15h50

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