Microsoft 365 Mail envoi automatique avec texte

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir à toutes et à tous,
Je vous souhaite un bon WE :)

Me revoilà devant nos ténors pour un souci de "Mail envoi automatique avec texte"
J'ai pas mal avancé sur le sujet mais je n'arrive pas à terminer :

Besoin : Si en Cellule D6, je sélectionne "Abonnement mensuel," ou "Abonnement annuel,"
Je voudrais qu'un mail soit envoyé à l'adresse en Cellule H6 avec le contenu de la cellule F6

Je joins le fichier test,
Un grand merci par avance,
lionel :)
 

Pièces jointes

  • envoi mail.xlsm
    58.9 KB · Affichages: 8
Dernière édition:
Solution
Re

Imaginons que dans Outlook (en plus de mon compte par défaut j'ai ajouté) mon compte Hotmail.
(voir moult tutos sur le web pour ce faire)
Imaginons que je sois patient et que je lise religieusement les conseils qu'on me prodigue
Imaginons que je sois curieux
Maintenant qu'on a rendu hommage à John L. )
Allons faire un tour du côté d'Outlook (*) pour tester ce que Lionel aurait pu trouver depuis le message#4
(puisque le lien était donné par Kiki29)

(*) non je ne vais pas rendre hommage à Dave en plus ;)
(quoique 2022, c'est l'année Proust)
Ci-dessous code issu des pages de RDB
Enrichi (BBcode):
Sub Mail_small_Text_Change_Account()
'Only working in Office 2007 and higher
'Don't forget to set a reference to Outlook in the VBA editor...

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour @fanch55 :)
Je dois être vraiment trop fatigué. Je laisse tomber pour ce soir.
Voilà quand même ce que j'ai fait :
VB:
'Salut Lionel,
'Quand tu utilises CDO, c'est une bouteille à la mer, tu n'ouvres pas Outlook ou un autre logiciel de messagerie.
'Le mail est directement envoyé à ton serveur de messagerie.
'Le code ci-dessous devrait fonctionner :
'Dans cet exemple, tous les noms entre crochets font référence à des cellules de ton classeur .

Sub Mail_CDO()
Dim Cdo As Object
Const Schema = "http://schemas.microsoft.com/cdo/configuration/"

    Select Case True
        Case [Expéditeur] = "TrucMachin@hotmail.com" = PLANTAGE
        Case [PassWord] = "TataYoyo"
        Case [Serveur] = "smtp.live.com"
        Case [Port] = "587"
        Case Else
            Set Cdo = CreateObject("CDO.Message")
                With Cdo
                    On Error Resume Next
                    With .Configuration.Fields
                        .Item(Schema & "smtpusessl") = True             ' <<-- transport SSL
                        .Item(Schema & "smtpauthenticate") = 1          ' <<-- cdoBasic
                        .Item(Schema & "sendusername") = [Expéditeur]
                        .Item(Schema & "sendpassword") = [PassWord]
                        .Item(Schema & "smtpserver") = [Serveur]
                        .Item(Schema & "smtpserverport") = [Port]
                        .Item(Schema & "sendusing") = 2                 ' <<-- cdoSendUsingPort
                        .Update
                    End With
            
                    .From = "TrucMachin@hotmail.com" '[Expéditeur]
                    .To = "lio@hotmail.fr" '[Destinataire]
                    .CC = "TrucMachin@hotmail.com" '[Expéditeur]
          
                    .Subject = "message de lionel"
                    .Body = [f6].Value
                    .Send
              
                    MsgBox IIf(Err, Err.Description, "Mail accepté"), IIf(Err, vbCritical, vbInformation), [Serveur]
                                              
                End With
            Set Cdo = Nothing
    End Select
 
End Sub
Evidemment ça plante dès la 1ère Case [Expéditeur] = "TrucMachin@hotmail.com"
1662923369979.png

🤒 🤒🤒🤒
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Enrichi (BBcode):
Sub Mail_CDO()
Dim Cdo As Object
Const Schema = "http://schemas.microsoft.com/cdo/configuration/"

    Select Case True
        Case [Expéditeur] = "TrucMachin@hotmail.com" '= PLANTAGE
        Case [PassWord] = "TataYoyo"
        Case [Serveur] = "smtp.live.com"
        Case [Port] = "587"
        Case Else
            Set Cdo = CreateObject("CDO.Message")
                With Cdo
                    On Error Resume Next
                    With .Configuration.Fields
                        .Item(Schema & "smtpusessl") = True             ' <<-- transport SSL
                        .Item(Schema & "smtpauthenticate") = 1          ' <<-- cdoBasic
                        .Item(Schema & "sendusername") = [Expéditeur]
                        .Item(Schema & "sendpassword") = [PassWord]
                        .Item(Schema & "smtpserver") = [Serveur]
                        .Item(Schema & "smtpserverport") = [Port]
                        .Item(Schema & "sendusing") = 2                 ' <<-- cdoSendUsingPort
                        .Update
                    End With
            
                    .From = "TrucMachin@hotmail.com" '[Expéditeur]
                    .To = "lio@hotmail.fr" '[Destinataire]
                    .CC = "TrucMachin@hotmail.com" '[Expéditeur]
          
                    .Subject = "message de lionel"
                    .Body = [f6].Value
                    .Send
              
                    MsgBox IIf(Err, Err.Description, "Mail accepté"), IIf(Err, vbCritical, vbInformation), [Serveur]
                                              
                End With
            Set Cdo = Nothing
    End Select
 
End Sub

Euh... t'as réellement remplacé les "" par des textes entre guillemets ???
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Enrichi (BBcode):
Sub Mail_CDO()
Dim Cdo As Object
Const Schema = "http://schemas.microsoft.com/cdo/configuration/"

    Select Case True
        Case [Expéditeur] = "TrucMachin@hotmail.com" '= PLANTAGE
        Case [PassWord] = "TataYoyo"
        Case [Serveur] = "smtp.live.com"
        Case [Port] = "587"
        Case Else
            Set Cdo = CreateObject("CDO.Message")
                With Cdo
                    On Error Resume Next
                    With .Configuration.Fields
                        .Item(Schema & "smtpusessl") = True             ' <<-- transport SSL
                        .Item(Schema & "smtpauthenticate") = 1          ' <<-- cdoBasic
                        .Item(Schema & "sendusername") = [Expéditeur]
                        .Item(Schema & "sendpassword") = [PassWord]
                        .Item(Schema & "smtpserver") = [Serveur]
                        .Item(Schema & "smtpserverport") = [Port]
                        .Item(Schema & "sendusing") = 2                 ' <<-- cdoSendUsingPort
                        .Update
                    End With
            
                    .From = "TrucMachin@hotmail.com" '[Expéditeur]
                    .To = "lio@hotmail.fr" '[Destinataire]
                    .CC = "TrucMachin@hotmail.com" '[Expéditeur]
          
                    .Subject = "message de lionel"
                    .Body = [f6].Value
                    .Send
              
                    MsgBox IIf(Err, Err.Description, "Mail accepté"), IIf(Err, vbCritical, vbInformation), [Serveur]
                                              
                End With
            Set Cdo = Nothing
    End Select
 
End Sub

Euh... t'as réellement remplacé les "" par des textes entre guillemets ???
ben OUI : très fatigué je suis :)
 

TooFatBoy

XLDnaute Barbatruc
ben OUI : très fatigué je suis :)
Ah oui, je vois ça !

Petite précision, juste au cas où tu n'aurais éventuellement pas bien compris : les "" servent à sortir de la macro, sans réaliser d'action, si au moins une des cellules n'est pas renseignée.



Tu as bien lu la dernière ligne de #53 ??? 🤔
Dans cet exemple, tous les noms entre crochets font référence à des cellules de ton classeur .



Autre précision si besoin (sinon ne pas en tenir compte ;-) ) :

Evidemment ça plante dès la 1ère Case [Expéditeur] = "TrucMachin@hotmail.com"
Ici "Case" n'est pas le mot "case" synonyme de "cellule".
Ici "Case" veut dire "dans le cas où". C'est la même chose qu'un "IF".

Case [Expéditeur] = "" c'est donc comme un If [Expéditeur] = ""

Autrement dit, un "Select Case", c'est comme des "IF" imbriqués.


Donc ici, si le contenu de la cellule nommée "Expéditeur" est vide, alors on fait ce qui suit c'est-à-dire rien, puis on ne passe pas au Case suivant mais on sort directement du "Select case".
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Ah oui, je vois ça !

Petite précision, juste au cas où tu n'aurais éventuellement pas bien compris : les "" servent à sortir de la macro, sans réaliser d'action, si au moins une des cellules n'est pas renseignée.



Tu as bien lu la dernière ligne de #53 ??? 🤔




Autre précision si besoin (sinon ne pas en tenir compte ;-) ) :


Ici "Case" n'est pas le mot "case" synonyme de "cellule".
Ici "Case" veut dire "dans le cas où". C'est la même chose qu'un "IF".

Case [Expéditeur] = "" c'est donc la même chose que If [Expéditeur] = ""

Donc ici, si le contenu de la cellule nommée "Expéditeur" est vide, alors on fait ce qui suit c'est-à-dire rien et ensuite on passe au "Case" suivant.
Merci Marcel : fatigué je suis ... ras la caquette lol :)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
J'ai modifié le code :
VB:
Sub Mail_CDO()
Dim Cdo As Object
Const Schema = "http://schemas.microsoft.com/cdo/configuration/"

    Select Case True
        Case [Expéditeur] = ""
        Case [PassWord] = ""
        Case [Serveur] = ""
        Case [Port] = ""
        Case Else
            Set Cdo = CreateObject("CDO.Message")
                With Cdo
                    On Error Resume Next
                    With .Configuration.Fields
                        .Item(Schema & "smtpusessl") = True             ' <<-- transport SSL
                        .Item(Schema & "smtpauthenticate") = 1          ' <<-- cdoBasic
                        '.Item(Schema & "sendusername") = TrucMuche@hotmail.com '[Expéditeur]
                        .Item(Schema & "sendpassword") = TataYoyo '[PassWord]
                        .Item(Schema & "smtpserver") = smtp.live.com '[Serveur]
                        .Item(Schema & "smtpserverport") = 587 '[Port]
                        .Item(Schema & "sendusing") = 2                 ' <<-- cdoSendUsingPort
                        .Update
                    End With
                
                    .From = "isitel@hotmail.com" '[Expéditeur]
                    .To = "arthour973@hotmail.fr" '[Destinataire]
                    .CC = "arthour973@hotmail.fr" '[Expéditeur]
              
                    .Subject = "message de lionel"
                    .Body = [f6].Value
                    .Send
                  
                    MsgBox IIf(Err, Err.Description, "Mail accepté"), IIf(Err, vbCritical, vbInformation), [Serveur]
                                                  
                End With
            Set Cdo = Nothing
    End Select
End Sub
Mais il n'accepte pas cette ligne : .Item(Schema & "sendusername") = TrucMuche@hotmail.com '[Expéditeur]
 

Discussions similaires

Réponses
1
Affichages
124
Compte Supprimé 979
C
Réponses
6
Affichages
308
Réponses
17
Affichages
1 K
Réponses
22
Affichages
2 K

Statistiques des forums

Discussions
312 305
Messages
2 087 087
Membres
103 461
dernier inscrit
dams94