Envoyer le fichier Excel ouvert par email

olivier_bahrein

XLDnaute Junior
Bjr,

Je souhaiterais ajouter un contrôle bouton dans ma feuille excel de manière à ce que lorsque je le clique, le document excel soit envoyé automatiquement par mail à une liste de destinataire (appel de outlook express par exemple et envoi).


Quel code VBA dois-je associer à mon bouton ?

Merci,

Olivier./.
 

ernest

XLDnaute Nouveau
Re : Envoyer le fichier Excel ouvert par email

olivier_bahrein à dit:
Je précise que le fichier excel partirait comme pièce jointe du mail.

peut-on donc envoyer ce mail epréremlissant les champs destinataires, objet, message etc... ?

merci.

Olivier./.

Bonjour,

Je ne sais pas si on peut ici - citer un autre site sur Excel,

mais tu as des solutions ici :

Excel et le WEB

Cordialement.
 

olivier_bahrein

XLDnaute Junior
Re : Envoyer le fichier Excel ouvert par email

Merci de ces infos.

Le problème est que selon que la personne qui ouvre son fichier a thunderbird, outlook, outlook express, netscape messenger etc.... la macro ne fonctionnera plus...

Comment faire pour envoyer la feuille en pièce jointe avec le client de messagerie par défaut ?

une sorte d'url mailto: non ?

Merci,

Olivier./.
 

pierrejean

XLDnaute Barbatruc
Re : Envoyer le fichier Excel ouvert par email

bonjour Olivier

a tester

Code:
Sub envoimail()
Workbooks("Mail.xls").HasRoutingSlip = True
With Workbooks("Mail.xls").RoutingSlip
    .Delivery = xlAllAtOnce
    .Recipients = Array("[EMAIL="adresse1@free.fr"]adresse1@free.fr[/EMAIL]", _
        "[EMAIL="adresse2@free.fr"]adresse2@free.fr[/EMAIL]", "[EMAIL="adresse3@free.fr"]adresse3@free.fr[/EMAIL]")
    .Subject = "Le fichier"
    .message = "comment allez vous ?? "
End With
ActiveWorkbook.Route
End Sub
 

RICO1972

XLDnaute Occasionnel
Re : Envoyer le fichier Excel ouvert par email

Salut,
pourquoi ne pas envoyer directement depuis excel ??
Ci-joint ma propo :
Sub EnvoiMail ()

ActiveSheet.Range("A2:f37").Select ' selection de la plage à envoyer

ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Item.To = Range("A4") ' adresse mail du correspondant
.Item.Subject = "xxxxxx" 'objet du message
'.Item.Send ' 'pour envoyer directement si necessaire
End With
End Sub


Espérant d'avoir été utile ...
@+
 

Lagache

XLDnaute Occasionnel
Re : Envoyer le fichier Excel ouvert par email

Bonjour le Forum et vous tous

Je rentre dans le post car celui ci m'interresse.
Deux questions , peut on remplacer Range(a4) par l'adresse email
et est ce que le plage est envoyée en fichier joint ou directement dans le message , j'ai effectivement une plage trés importante par exemple ("A1:BF52")

Merci et excusez moi de mon intrusion

@+
 

olivier_bahrein

XLDnaute Junior
Re : Envoyer le fichier Excel ouvert par email

Merci Pierrejean

La sub ne fonctionne pas (j'ai win 2000 et excel 2000). erreur d'exécution 9.

Merci Ricoh,

mais je souhaiterais envoyer la feuille excel en PJ et non une plage de cellule.
Comment faire ?
Comment utiliser le client de messagerie par défaut de la machine ?

Olivier./.
 

Lagache

XLDnaute Occasionnel
Re : Envoyer le fichier Excel ouvert par email

Bonjour vous tous du Forum et du post

J'ai un probléme Rico avec la sub ( j'ai xp et excel 2000) , j'ai un message d'erreur avec la ligne "With ActiveSheet.MailEnveloppe"

message : propriété ou méthode non gérée par cet objet

est ce un probléme de déclaration ou lié à la bibliothéque et comme olivier si cela était possible par fichier joint cela me conviendrait , mais bon !

Merci à vous

@+
 

Creepy

XLDnaute Accro
Re : Envoyer le fichier Excel ouvert par email

Bonjour le Forum

Suite à la demande d’Olivier, je viens proposer ma solution.

Premièrement quelques remarques :

Si tu veux gérer thunderbird, outlook, outlook express etc … il va te falloir faire référence à toutes les librairies de chaque logiciel de mail, au risque si elle n’est pas installée chez quelqu’un d’avoir un beau message d’erreurs. Sinon il faut que tu fasses du late binding.

Par exemple si j’ai outlook chez moi et pas thunderbird si tu coches dans les références à ton fichier Thunderbird je vais avoir un message d’erreur !

Il te faut donc faire du late binding. Pas de cochage de référence donc pas d’erreur mais, là, tu devras trouver quel logiciel mail est installé sur la machine pour ne pas te planter de procédure ! Il va falloir, je pense, que tu cherches en base de registre les entrées de chaque logiciel pour savoir lequel est installé, donc il faut t’installer tous les logiciel de mail pour te permettre de faire des tests et trouver les bonnes clefs de registre… Bon courage

Si Excel est installé on peut je pense affirmer que dans 80% des cas, Outlook l’est aussi. Il est maintenant rare de n’avoir qu’Excel d’installé sur un poste et pas le reste. De plus hormis les « power-users » la majeur partie des gens font des installations complètes.

Si c’est pour une entreprise, le logiciel de mail le plus utilisé est Outlook.

Bref pour toutes ces raisons, je passerais par Outlook pour envoyer mon mail. Je ferais du late binding pour m’affranchir de la version Outlook (dans le cochage des références, selon la version, c’est outlook 10 ,11, etc …)

A toi de voir si dans les rares cas où Outlook n’est pas installé sur le poste cela te pose un réel problème ou si tu peux le gérer en faisant un message du style « Outlook ne semble pas installer je n’en peux pas envoyer automatiquement ce fichier faites le à la main».

Moi j’opterais pour cette solution beaucoup moi complexe à gérer pour toi et ceux qui n’utilise pas Outlook et bah … tant pis pour eux.
Enfin si tu souhaites une solution la plus générale possible, passe par Outlook express installé avec Windows. Tu es sûr que tout le monde l’a !! (A voir s’il est présent avec toutes les versions de Windows, je ne sais pas. En tout cas il est dans XP c’est certain).

Pour finir voici un code qui fonctionne en late binding pour Outlook (PAS Express !). Seule contrainte le document doit obligatoirement être sauvegardé pour que cette macro fonctionne , mais c’est géré dans le code.

Code:
[SIZE=3][FONT=Times New Roman]Sub Create_mail()[/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]Dim MailObj As Object[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Set MailObj = CreateObject("outlook.Application")[/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]If ThisWorkbook.Path = "" Then ' Le document doit être sauvegardé pour s'auto envoyer[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]   MsgBox "Le document doit être sauvegardé avant de s'envoyer lui même"[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]   Exit Sub ' C'est pas le cas ![/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Else[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]   ThisWorkbook.Save ' C'est bon on sauvegarde les der,ières modifs ![/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]   Set ObjNewMail = MailObj.CreateItem(olMailItem)  ' 1) On crée le mail[/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]   With ObjNewMail[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]       .Recipients.Add "toto@aol.com;tata@free.fr" ' Destinataires[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]       .Recipients.ResolveAll ' test des adresses mail[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]   ' propriétés du mail[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]       .Importance = olImportanceHigh ' Importance du mail haute ...[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]       .Subject = "Envoi de moi même !" ' titre[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]       .Attachments.Add ActiveWorkbook.FullName ' Pièce jointe[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]       .Body = "Bonjour, ci joint un copie de moi même !!" ' Corps[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]   End With[/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]   ObjNewMail.Display ' Affiche le mail[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]'ObjNewMail.send ' et/ou l'envoi ![/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]End If[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]End Sub[/FONT][/SIZE]

Voila A+

Creepy

PS : pour comprendre la différence entre late et early binding voir ici : FAQ Visual Basic - Question 104 : Qu'entend-t-on par "early binding" et "late binding" ? Que préférer ?
 
Dernière édition:

olivier_bahrein

XLDnaute Junior
Re : Envoyer le fichier Excel ouvert par email

Merci Creepy,

Tu as entièrement raison.

Je ne suis pas assez "avancé" en VBA pour faire tous ces tests en base de registre (ça viendra peut-être).

Je vais suivre ton conseil et mettre un module pour Outlook.

Amitiés,

Olivier./.
 

sgu

XLDnaute Nouveau
Re : Envoyer le fichier Excel ouvert par email

Bonsoir,

Creepy, sais-tu si on peut ajouter une signature enregistré dans outlook après ça :

With ObjNewMail
.Recipients.Add "toto@aol.com;tata@free.fr" ' Destinataires
.Recipients.ResolveAll ' test des adresses mail
' propriétés du mail
.Importance = olImportanceHigh ' Importance du mail haute ...
.Subject = "Envoi de moi même !" ' titre
.Attachments.Add ActiveWorkbook.FullName ' Pièce jointe
.Body = "Bonjour, ci joint un copie de moi même !!" ' Corps
End With

merci
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 274
Membres
103 168
dernier inscrit
isidore33