Bonsoir Pablito,
Je te propose de créer une nouveau module dans ton projet VBA et d'y inclure le code suivant :
Option Explicit
Sub sendEmail(ztxt As String)
Const cMailAdress = "x@Outlook.com" 'Adresse d'expédition à ajuster
Const olMailItem = 0
Const cObjet = "Nouvelle requête..." 'Objet du mail à ajuster
Dim oOL As Object
Dim oNS As Object
Dim oMail As Object
Dim sSubject As String, sBody As String
'On s'assure qu'une session OUTLOOK est ouverte
PreparerOutlook oOL
Set oNS = oOL.GetNamespace("MAPI")
sSubject = cObjet & " le " & format(Now(), "dd/mm/yyyy hh:MM:ss") 'A ajuster
sBody = " Une nouvelle requête de " & ztxt & " a été formulée le " & format(Now(), "dd/mm/yyyy hh:MM:ss") 'A ajuster
Set oMail = oNS.CreateItem(olMailItem)
With oMail
.To = cMailAdress
.Subject = sSubject
.Body = sBody
.Send
End With
Set oMail = Nothing
Set oOL = Nothing
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 GoTo PreparerOutlookErreur
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")
Else 'si Outlook est ouvert, l'instance existante est utilisée
Set oOutlook = GetObject("Outlook.Application")
'oOutlook.Visible = True
End If
Exit Sub
PreparerOutlookErreur:
MsgBox "Une erreur est survenue lors de l'exécution de PreparerOutlook()..."
End Sub
Et d'ajouter au code du bouton "Transmettre..." du userform l'appel à la procédure d'envoi :
Je joins mon classeur de test.