Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 vba Envoi de courriel avec Gmail

Xtian_Québec

XLDnaute Occasionnel
Bonjour le forum, j'utilise depuis plusieurs années et ce, dans plusieurs fichiers, un code vba pour envoyer des courriels en utilisant Gmail. Plusieurs développeurs ont probablement le même problème que moi présentement à cause des changements que Google a effectué avec la sécurité et l'accès au compte google avec une applications tiers. Depuis le 30 mai 2022, le message d'erreur suivant s'affiche lors que le code tente d'envoyer le courriel:

Run-time error 2147220975 (80040211)
Le message n'a pas pu être envoyé vers le serveur SMTP. Le code d'erreur de transport était 0x80040217. la réponse du serveur était not available.

J'ai effectué quelques recherches sur le web et il semble que l'accès avec la validation en 2 étapes au compte Google (Utilisateur + mot de passe (MDP)) n'est plus suffisante pour accéder à notre compte Gmail avec une application tiers (vba-Excel). Quelques développeurs indiquent qu'ils ont remplacé le mot de passe Google dans leur code par un nouveau "mot de passe des applications"(MDPA) qu'ils ont configuré dans le compte Google.
J'ai essayé ce changement dans mon code
strComptePsw = "MDP" changé pour strComptePsw = "MDPA"
et j'ai le même message d'erreur...

Voici un exemple du code que j'utilise:
Sub ValiderEmail()
'VALIDATION ADRESSE EMAIL NOUVEAU CLIENT
Dim strEmailServer As String
Dim strCompteGmail As String
Dim strComptePsw As String
Dim strFrom As String
Dim strTo As String
Dim strCC As String
Dim strSujet As String
Dim strBody As String

strEmailServer = "smtp.googlemail.com"
strCompteGmail = "monCompte@gmail.com"
strComptePsw = "MDP"
strFrom = "monCompte@gmail.com"
strTo = "tonCompte@gmail.com"

strSujet = "Validation adresse de courriel"
strBody = "Bonjour," & "<br>" & _
"Ce courriel automatique a été généré pour valider votre adresse courriel." & "<br>" & _
"Merci de nous faire confiance, nous apprécions votre clientèle." & "<br>" & "<br>" & "<br>" & _
"Ma compagnie" & "<br>" & _
"123 Marue" & "<br>" & _
"Maville (Québec) A1A 1A1" & "<br>" & _
"800-123-4567"

MailEnvoi strEmailServer, True, strCompteGmail, strComptePsw, 465, 10, strFrom, strTo, strSujet, strBody, ""
GoTo Message

EnvoyerEmailErreur:
MsgBox "Le courriel n'a pas pu être envoyé..." & vbCrLf & "Demander de l'assistance technique au besoin", vbCritical, "Courriel de validation - Erreur."
Exit Sub

Message:
MsgBox "Le courriel a été envoyé...", vbOKOnly, "Courriel de validation."

End Sub

**********************************************************

'CODE POUR ENVOYER LE COURRIEL AVEC GMAIL
Public Sub MailEnvoi(Serveur, Identify, User, PassWord, Port, Delay, Expediteur, Dest, Objet, Body, Pj)
'VARIABLES
Dim msg
Dim Conf
Dim Config
Dim splitPj
Dim IsplitPj

'SET VARIABLES
Set msg = CreateObject("CDO.Message") 'pour la configuration du message
Set Conf = CreateObject("CDO.Configuration") ' pour la configuration de l'envoi
Set Config = Conf.Fields

'Configuration des parametres d'envoi
'(SMTP - Identification - SSL - Password - Nom Utilisateur - Adresse messagerie)
With Config
If Identify = True Then
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = User
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = PassWord
End If

.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Serveur
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = Delay
.Update

End With

With msg
Set .Configuration = Conf
.To = Dest
.From = Expediteur
.Subject = Objet
.HTMLBody = Body

If Pj <> "" Then
splitPj = Split(Pj & ";", ";")

For IsplitPj = 0 To UBound(splitPj)
If Trim("" & splitPj(IsplitPj)) <> "" Then
.AddAttachment Trim("" & splitPj(IsplitPj))
End If
Next

End If

'Envoyer le courriel
.Send 'envoi du message

End With

'Réinitialisation des variables
Set msg = Nothing
Set Conf = Nothing
Set Config = Nothing

End Sub

Je comprends que la solution se trouve probablement avec le "mot de passe pour application" mais je ne sais pas vraiment comment configurer le tout dans mon compte google ainsi que dans mes codes VBA s'il y a lieu. Je demande alors aux experts de ce forum de m'aider à solutionner ce problème et du même coup, aider plusieurs autres développeurs qui ont probablement le même problème depuis la mise à jour de Google le 30 mai dernier.

Encore une fois, je vous remercie à l'avance pour vos solutions.

@+++
Xtian_Quebec
 

Deadpool_CC

XLDnaute Accro
Bonjour,
je suppose que tu as lu et suivi les instructions des liens ci-dessous ?



les mot de passe application sont des codes générés par Google que tu trouve sur ton compte et qui en plus sont révoqué automatiquement dès que tu change le MdP de ton compte ... lol

il serait presque plus simple de mettre ton compte Gmail dans un cleint messagerie sur le poste et faire le code VBA pour envoyé ton message depuis de client
 
Dernière édition:

Xtian_Québec

XLDnaute Occasionnel
Merci Deadpool_CC pour la réponse rapide, très apprécié. J'utilise un code que j'avais récupérer sur le forum et tout fonctionnait bien, sans trop comprendre exactement ce qui se passe, je ne suis malheureusement pas un expert et lorsque je peux récupérer un code existant et que ça fonctionne, je suis bien content - J'ai quand même une bonne base en VBA mais pour les courriels, copier/coller est me façon de fonctionner et tout alliat bien jusqu'au 30 mai - Je ne suis pas très familier avec "client messagerie", pourrais tu me donner les étapes à suivre pour permettre à mes fichiers de continuer à envoyer des courriels?
Très apprécié encore, merci.
Xtian_Quebec
 

Deadpool_CC

XLDnaute Accro
j'ai pas de solution de mon coté pour t'aider ... j'ai rien qui part ou sort par mail de manière automatiquement depuis mon Excel (ou poste informatique).
Je pourrais pas allez plus loin que cette orientation vers les étape google pour adapter.

(c'est la rançon de la gloire à avoir un outil Métier dédié avec partie BI + marketing transactionnel et masse intégré)
 

Xtian_Québec

XLDnaute Occasionnel
Merci encore pour tes commentaires - je vais laisser le fil ouvert car c'est justement ces étapes google que j'ai de la difficulté à comprendre avec mon compte gmail et la logique qu'il faut ensuite utiliser dans VBA...Cette logique devra être ensuite utilisée dans tous mes fichiers par d'autres utilisateurs et d'autres comptes google...Quelqu'un d'autre a une solution à mon problème?
Xtian
 

Discussions similaires

Réponses
1
Affichages
497
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…