Programmation formulaire avec envoi mail

Fermé
Mecomandisert - 5 déc. 2019 à 12:29
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 6 déc. 2019 à 18:14
Bonjour,

J'aurais besoin de votre aide pour un petit problème qui me fait face. Je m'attaque à un jolie formulaire pour tous les employés de l'entreprise et je vois qu'ils galèrent de fou (Et moi aussi). J'ai donc faire un petit classeur excel MAIS, car il y a un MAIS c'est que je bloque sur deux points: Le premier, je souhaite que le formulaire soit transferer au dessus de mon devis (cf image) sur des cellules bien spéciale. Le deuxieme, c'est d'envoyer la feuille dans son intégrité sur un mail précis avec le nom de la société en objet.

https://ibb.co/SDTkyPf
https://ibb.co/FmXQj6y

J'ai trouvé ce code pour outlook:


Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String)
'par Excel-Malin.com ( https://excel-malin.com )

On Error GoTo EnvoyerEmailErreur

'définition des variables
Dim oOutlook As Outlook.Application
Dim oMailItem As Outlook.MailItem
Dim Body As Variant

Body = ContenuEmail

'vérification si le Contenu du mail n'est pas vide. Si oui, email n'est pas envoyé. Si vous voulez pouvoir envoyer les email vides, mettez en commentaire les 4 lignes de code qui suivent.
If (Body = False) Then
MsgBox "Mail non envoyé car vide", vbOKOnly, "Message"
Exit Sub
End If

'préparer Outlook
PreparerOutlook oOutlook
Set oMailItem = oOutlook.CreateItem(0)

'création de l'email
With oMailItem
.To = Destinataire
.Subject = Sujet

'CHOIX DU FORMAT
'----------------------
'email formaté comme texte
.BodyFormat = olFormatRichText
.Body = Body

'OU

'email formaté comme HTML
'.BodyFormat = olFormatHTML
'.HTMLBody = "<html><p>" & Body & "</p></html>"
'----------------------

If PieceJointe <> "" Then .Attachments.Add PieceJointe

.Display '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire)
.Save '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire)
.Send '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire)
End With

'nettoyage...
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

Exit Sub

EnvoyerEmailErreur:
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub

Private Sub PreparerOutlook(ByRef oOutlook As Object)
'par Excel-Malin.com ( https://excel-malin.com )

'------------------------------------------------------------------------------------------------
'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.
'------------------------------------------------------------------------------------------------

On Error Resume Next
'vérification si Outlook est ouvert
Set oOutlook = GetObject(, "Outlook.Application")

If (Err.Number <> 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
Err.Clear
Set oOutlook = CreateObject("Outlook.Application")

If (Err.Number <> 0) Then
MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
Exit Sub
Else
End If

Else 'si Outlook est ouvert, l'instance existante est utilisée
End If

End Sub
A voir également:

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
5 déc. 2019 à 16:51
Bonjour,

Il faut que ton classeur soit enregistré en classeur prenant en charge les macros .

sur ce lien tu verras qu'il faut

Allez dans outils Références et Ajouter la Référence Microsoft Outlook X.0 Object Library

Et il y a aussi la manière de lancer la macro, il faut tout lire!

https://excel-malin.com/codes-sources-vba/envoyer-un-email-avec-excel/


Call EnvoyerEmail("monsujet", "Mecomandisert@free.fr", "ceci est un devis", ThisWorkbook.Path & "\" & ThisWorkbook.Name) 'envoi du classeur actif


Voilà,

0
Mecomandisert
6 déc. 2019 à 17:28
Bonjour,

Je n'y arrive vraiment pas... Je copie colle pour le module, ensuite je passe sur le code du bouton et je copie l'autre partie du code pour l'envoi de mail mais le logiciel m'indique qu'il y a une erreur...

Je dois m'y prendre mal quelque part mais je suis à la lettre tout ce que le site dit.
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
6 déc. 2019 à 18:14
Voilà un exemple à télécharger:

Allez dans outils Références et cochez la Référence Microsoft Outlook X.0 Object Library

https://www.cjoint.com/c/ILgrmVovoHQ

@+ Le Pivert
0