XL 2019 mail outlook depuis un Userform

youpi457032

XLDnaute Occasionnel
Bonjour,
Sur mon Userform "Formulaire_élève_Consultation" j'ai créé un bouton mail. (nommer "Bouton_mail")
L'idée c'est de contacter l'élève depuis sa fiche (au départ de l'userform par mail (avec Outlook 2019)
J'ai trois ComboBox qui contiennent ces mails nommés T7, T8, T9
il faudrait que la macro reprenne les mails depuis les ComboBox T7, T8 et T9, les expédie dans le champ "to" d'outlook ( sans doublon) .
quelqu'un saurait-il écrire cela ???
je joins un fichier image de mon Userform
Merci beaucoup !
 

Pièces jointes

  • mon userform.jpg
    mon userform.jpg
    470.5 KB · Affichages: 37

Lolote83

XLDnaute Barbatruc
Bonjour,
Sans fichier joint, voici un petit code qu'il faudra donc adapter

Attention, penser à activer la référence VBA Microsoft Outlook 16.0 Object Library

VB:
Sub EnvoiMail()
    
    '--------------------------------------------------------------
    '         Reference VBA = Microsoft Outlook 16.0 Object Library
    '--------------------------------------------------------------
    
    
    '-------------------------------------------------------------- Déclaration des variables
    Dim LeMail As Object
    Dim xTabFich()
    
    '-------------------------------------------------------------- Début
    xSujet = "Inscrire ici le sujet du mail"
    xTo = Me.T7 & "," & Me.T8 & "," & Me.T9             'C'est ICI que l'on récupère les combos
    xCc = ""
    xBody "Ici le corps du mail"
    
    
    Set OutlookApp = CreateObject("Outlook.Application")
    Set LeMail = OutlookApp.CreateItem(0)
    With LeMail
        .To = xTo
        .CC = xCc
        .Subject = xSujet
        .Body = xBody
        .Display                'Pour afficher avant envoi
        '.Send                   'Pour envoi direct
    End With
    ' Effacer les variables objet pour libérer la mémoire
    Set LeMail = Nothing
End Sub
@+ Lolote83
 

youpi457032

XLDnaute Occasionnel
Bonjour,
Sans fichier joint, voici un petit code qu'il faudra donc adapter

Attention, penser à activer la référence VBA Microsoft Outlook 16.0 Object Library

VB:
Sub EnvoiMail()
   
    '--------------------------------------------------------------
    '         Reference VBA = Microsoft Outlook 16.0 Object Library
    '--------------------------------------------------------------
   
   
    '-------------------------------------------------------------- Déclaration des variables
    Dim LeMail As Object
    Dim xTabFich()
   
    '-------------------------------------------------------------- Début
    xSujet = "Inscrire ici le sujet du mail"
    xTo = Me.T7 & "," & Me.T8 & "," & Me.T9             'C'est ICI que l'on récupère les combos
    xCc = ""
    xBody "Ici le corps du mail"
   
   
    Set OutlookApp = CreateObject("Outlook.Application")
    Set LeMail = OutlookApp.CreateItem(0)
    With LeMail
        .To = xTo
        .CC = xCc
        .Subject = xSujet
        .Body = xBody
        .Display                'Pour afficher avant envoi
        '.Send                   'Pour envoi direct
    End With
    ' Effacer les variables objet pour libérer la mémoire
    Set LeMail = Nothing
End Sub
@+ Lolote83
Merci ! ca c'est du rapide !!! impressionnant...
Mais que dois-je adapter ???,
"Le mail" ?? est à remplacer par le nom de mon userform ?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Si vous créez l'application outlook avec CreateObject, il n'est pas necessaire d'activer les références à la bibliothèque "Microsoft Outlook xx.x Object Library" qui dépend de la version de l'utilisateur.

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Voici une version avec toutes les variables déclarées et qui fonctionne chez moi.
J'ai rajouté une ligne de nettoyage de l'objet application en bas.
VB:
Sub EnvoiMail()
 
    '-------------------------------------------------------------- Déclaration des variables
    Dim OutlookApp As Object, LeMail As Object
    Dim xTabFich()
    Dim xSujet As String, xTo As String, xCc As String, xBody As String
  
    '-------------------------------------------------------------- Début
    xSujet = "Inscrire ici le sujet du mail"
    xTo = Me.T7 & "," & Me.T8 & "," & Me.T9             'C'est ICI que l'on récupère les combos
    xCc = ""
    xBody = "Ici le corps du mail"
  
  
    Set OutlookApp = CreateObject("Outlook.Application")
    Set LeMail = OutlookApp.CreateItem(0)
    With LeMail
        .To = xTo
        .CC = xCc
        .Subject = xSujet
        .Body = xBody
        .Display                'Pour afficher avant envoi
        '.Send                   'Pour envoi direct
    End With
    ' Effacer les variables objet pour libérer la mémoire
    Set LeMail = Nothing
    Set OutlookApp = Nothing
End Sub

cordialement
 
Dernière édition:

youpi457032

XLDnaute Occasionnel
Re,

Voici une version avec toutes les variables déclarées et qui fonctionne chez moi.
J'ai rajouté une ligne de nettoyage de l'objet application en bas.
VB:
Sub EnvoiMail()
 
    '-------------------------------------------------------------- Déclaration des variables
    Dim OutlookApp As Object, LeMail As Object
    Dim xTabFich()
    Dim xSujet As String, xTo As String, xCc As String, xBody As String
 
    '-------------------------------------------------------------- Début
    xSujet = "Inscrire ici le sujet du mail"
    xTo = Me.T7 & "," & Me.T8 & "," & Me.T9             'C'est ICI que l'on récupère les combos
    xCc = ""
    xBody = "Ici le corps du mail"
 
 
    Set OutlookApp = CreateObject("Outlook.Application")
    Set LeMail = OutlookApp.CreateItem(0)
    With LeMail
        .To = xTo
        .CC = xCc
        .Subject = xSujet
        .Body = xBody
        .Display                'Pour afficher avant envoi
        '.Send                   'Pour envoi direct
    End With
    ' Effacer les variables objet pour libérer la mémoire
    Set LeMail = Nothing
    Set OutlookApp = Nothing
End Sub

cordialement
Ah trop bien ca marche Nickel !
Juste un petit beug....
si ma combobox est vide ... elle me renvoie "Vide" en champ adresse mail dans outlook...
et Outlook ne considère pas le mot "vide" comme étant une adresse mail
Y a ti un moyen d'éviter qu'un combobox renvioe le mot" vide" si le champ est null ???
Ou alors effacer le mot vide à chaque fois qu'il est rencontré ?
 

Deadpool_CC

XLDnaute Accro
Bonjour,
En parcourant le fil du post ... suggestion : dans ton formulaire, tu peux aussi rendre inactif les boutons d'actions si aucun élève n'est sélectionné ...
Et adapte le code au cas ou les emails ne serait pas tous renseignés (voir aucun).
 

youpi457032

XLDnaute Occasionnel
oups ! pas vu la question !
Alors c'est pire que ca...
si ma cellule auquel fait reference ma combox est vide...
ma combobox ecrit "vide"...
du coup dans le champ mail elle recopie " vide" ...
moi je voudrai au départ que la combobox ne renvoie pas la valeur "vide" si la cellule à laquelle elle fait reference est vide....
 

youpi457032

XLDnaute Occasionnel
existe t-il un parametrage quelconque dans les propriétés d'une combobox pour qu'elle ne renvoie aunune valeur si la cellule à laquelle elle fait référence est vide ?
Ce serait plus ça au départ... au plus logique....

sinon integrer un bout de code dans la macro mail :
du style si T7, ou T8, ou T9 = "vide" ne par envoyer cette valeur "vide" et renvoyer les autres ...
 

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG