Microsoft 365 Envoi de mail CDO compte GMail

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

danielco

XLDnaute Barbatruc
Bonjour,

Pouvez-vous me fournir un macro pour envoyer du courrier depuis un compte GMail ? Les exemples que je trouve sur internet ne fonctionnent pas.

Merci d'avance.

Daniel
 
Solution
Bonsoir
Désolé de plomber l'ambiance mais.....
CDO ne passe plus pour aucun proxy ni serveur (MÊME celui de votre FAI sans connections avec login et mot de passe)
Autant dire laisser tomber cette méthode
Personnellement, je l'ai utilisé pendant plus de 25 ans, je ne l'utilise plus depuis plusieurs années maintenant

thunderbird permet encore (si installer de macroter un mail en vba mais c'est pauvre

outlook marche encore tres avec certaines versions

Mais les dernières mises à jour W10 et 11 de novembre 2025 renvoient à l'application courrier de windows qui ouvre en fait OWA(Outlook web application)

Mais dans tous les cas CDO c'est mort et enterré selon moi
Hello,

voici le code
VB:
Sub Envoi_via_CDO(Destinataire, Sujet, Corps_Mail, Expediteur, PJ, Serveur_SMTP, Port_SMTP, Nom_Utilisateur, Mot_De_Passe)
' Utilisation :
' Destinataire = adresse mail du destinataire
' Sujet = sujet du mail que verra le destinataire
' Corps_Mail = contenu du mail que verra le destinataire
' Expediteur = adresse mail de l'expéditeur
' PJ = chemin complet de la pièce jointe (peut rester vide)
'
' Serveur_SMTP : nom complet du serveur SMTP de la connexion active (ex : smtp.free.fr si le FAI actuel est Free)
' Port_SMTP : port utilisé pour l'envoi (généralement 465 si SSL/TLS)
' Nom_Utilisateur : nom seul du compte utilisateur de la BàL utilisé pour l'envoi (ex : si "toto@free.fr", utiliser "toto")
' Mot_De_Passe : mot de passe du compte utilisateur de la BàL utilisé pour l'envoi

    Set Message = CreateObject("cdo.Message")

    ' configuration de la messagerie
    With Message.Configuration.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Serveur_SMTP
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port_SMTP
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Nom_Utilisateur
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Mot_De_Passe
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
        
        .Update
    End With

    ' configuration du message
    With Message
        .To = Destinataire
        .Subject = Sujet
        .TextBody = Corps_Mail
        .BodyPart.Charset = "UTF-8"
        .From = Expediteur

        If Len(PJ) > 0 Then .AddAttachment (PJ)

        .Send
    End With

    Set Message = Nothing

    MsgBox "Message envoyé... ou pas :-D"

End Sub

et le fichier pour tester
 

Pièces jointes

Bonsoir @Nain porte quoi

1764696794319.png
 
Ben oui, comme dit comme dit Gégé-45550, si les infos sont bidons ça ne fonctionnera pas
elle va marcher beaucoup moins bien (...la macro)
Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les cookies.

j'avais pourtant écris
' Utilisation :
' Destinataire = adresse mail du destinataire
' Sujet = sujet du mail que verra le destinataire
' Corps_Mail = contenu du mail que verra le destinataire
' Expediteur = adresse mail de l'expéditeur
' PJ = chemin complet de la pièce jointe (peut rester vide)
'
' Serveur_SMTP : nom complet du serveur SMTP de la connexion active (ex : smtp.free.fr si le FAI actuel est Free)
' Port_SMTP : port utilisé pour l'envoi (généralement 465 si SSL/TLS)
' Nom_Utilisateur : nom seul du compte utilisateur de la BàL utilisé pour l'envoi (ex : si "toto@free.fr", utiliser "toto")
' Mot_De_Passe : mot de passe du compte utilisateur de la BàL utilisé pour l'envoi

Mais bon, je peux le mimer aussi 😉
 
vous êtes sérieux les gars là ?
je sais pas si vous avez vu mais c'est free.fr autrement dit le serveur smtp de mon FAI
l’expéditeur peut être ce qu'on veux
c'est le mdp qui compte et correspondant au serveur smtp
de toute facon j'ai essayé avec mon id aussi et j'ai le même résultat
après on va pas épiloguer libre a vous de l'utiliser mais moi comme je vous ai dit je l'ai éliminé
et je conseille a qui conque veut bien l'entendre de faire de même

pour mon mailing je suis passé à l'authO2 depuis longtemps
 
Patrick, si je ne m'abuse vous passez par une connexion FreeMobile, et dans ce cas je ne sais pas si ça passe, moi j'utilise une connexion fibre Free et je n'ai aucune erreur.
Voici l'entête du mail reçu (sur Thunderbird) via la macro qui utilise CDO
Code:
Return-Path: <expéditeur@gmail.com>
Delivered-To: destinataire@mondomaine.fr
Received: from hetre.o2switch.net
    by hetre.o2switch.net with LMTP
    id KP3sH/P4Lmntii4AD8Cgqg
    (envelope-from <expéditeur@gmail.com>)
    for <destinataire@mondomaine.fr>; Tue, 02 Dec 2025 15:34:27 +0100
Return-path: <expéditeur@gmail.com>
Envelope-to: destinataire@mondomaine.fr
Delivery-date: Tue, 02 Dec 2025 15:34:27 +0100
Received: from smtp5-g21.free.fr ([212.27.42.5]:52822)
    by hetre.o2switch.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
    (Exim 4.98.2)
    (envelope-from <expéditeur@gmail.com>)
    id 1vQRSR-0000000DA67-1vwl
    for destinataire@mondomaine.fr;
    Tue, 02 Dec 2025 15:34:27 +0100
Received: from monpc (unknown [monip])
    (Authenticated sender: Nom_Utilisateur@free.fr)
    by smtp5-g21.free.fr (Postfix) with ESMTPSA id CE71D60143
    for <destinataire@mondomaine.fr>; Tue,  2 Dec 2025 15:33:45 +0100 (CET)
Thread-Topic: Test plain text message - 1 attachment
thread-index: AdxjmLDgd5XWdN+VQ+mu78/U5Jsv0A==
From: <expéditeur@gmail.com>
To: <destinataire@mondomaine.fr>
Subject: Test plain text message - 1 attachment
Date: Tue, 2 Dec 2025 15:33:56 +0100
Message-ID: <16556C50486D4571BDBFB27D4A92FF29@monpc>
MIME-Version: 1.0
Content-Type: multipart/mixed;
    boundary="----=_NextPart_000_0000_01DC63A1.12B1F810"
X-Mailer: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE
X-Spam-Status: No, score=-42.3
X-Spam-Score: -422
X-Spam-Bar: ------------------------------------------
X-Spam-Flag: NO

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01DC63A1.12B1F810
Content-Type: text/plain;
    charset="UTF-8"
Content-Transfer-Encoding: 7bit

This is a test message to send a plain text email from Access with an attached file

J'ai regardé cet ancien code https://www.developpez.net/forums/d...l/contribuez/formulaire-mailers-piece-jointe/ qui semble être de vous, effectivement celui là est incomplet et ne fonctionne plus
 
Salut,
si patricktoulon est toujours en windows 10 (d'ailleurs je me demande pourquoi car cette version n'est plus maintenue) il faut vérifier ceci :
  • CDO (Collaboration Data Objects) est une vieille bibliothèque qui repose sur les API réseau de Windows (Schannel).
  • Sur Windows 10, TLS 1.2 n’est pas toujours activé par défaut pour les applications héritées comme CDO. Résultat : quand vous tentez d’envoyer un mail via smtp.office365.com (port 587, STARTTLS), la négociation échoue avec des erreurs du type « STARTTLS is required » ou « transport lost connection ».
  • Sur Windows 11, Microsoft a renforcé la sécurité et activé TLS 1.2/1.3 par défaut, ce qui permet à CDO de fonctionner sans modification.

⚙️ Solutions possibles sous Windows 10​

  1. Activer TLS 1.2 dans le registre Windows 10

  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
    "DisabledByDefault"=dword:00000000
    "Enabled"=dword:00000001

    Cela force Windows 10 à utiliser TLS 1.2 pour les clients hérités comme CDO.

Nullosse de passage
 
Bonsoir,
Je ne sais pas à qui ça pourrait intéresser, mais on ne sait jamais !


GUIDE COMPLET : Créer un projet Google Cloud OAuth pour une application Excel/VBA​


PARTIE 1 : CRÉATION DU PROJET GOOGLE CLOUD​

Étape 1.1 : Accéder à Google Cloud Console
Étape 1.2 : Créer un nouveau projet
  • En haut de la page, cliquez sur le nom du projet actuel (ou "Sélectionner un projet").
  • Cliquez sur NOUVEAU PROJET (en haut à droite).
  • Remplissez les informations :
    • Nom du projet : Macro Gmail Excel (ou un nom de votre choix)
    • Organisation : Laissez vide (sauf si vous en avez une)
    • Emplacement : Aucune organisation
  • Cliquez sur CRÉER.
  • Attendez la notification « Projet créé ».

PARTIE 2 : ACTIVER L'API GMAIL​

Étape 2.1 : Accéder à la bibliothèque d'API
  • Dans le menu hamburger (≡), cliquez sur APIs et services.
  • Cliquez sur Bibliothèque.
Étape 2.2 : Activer Gmail API
  • Dans la barre de recherche, tapez Gmail API.
  • Sélectionnez Gmail API dans les résultats.
  • Cliquez sur ACTIVER.
  • Attendez que l’API soit activée.

PARTIE 3 : CONFIGURER L'ÉCRAN DE CONSENTEMENT OAUTH​

Étape 3.1 : Accéder à l'écran de consentement
  • Dans APIs et services, cliquez sur Écran de consentement OAuth.
Étape 3.2 : Choisir le type d'utilisateur
  • Sélectionnez Externe.
  • Cliquez sur CRÉER.
Étape 3.3 : Configuration de l'écran de consentement (Page 1/4)
  • Nom de l'application : Macro Excel Gmail
  • E-mail d’assistance utilisateur : votre email
  • Logo, domaine, page d’accueil : facultatif
  • Adresse e-mail du développeur : votre email
  • Cliquez sur ENREGISTRER ET CONTINUER.
Étape 3.4 : Ajouter les scopes (Page 2/4)
  • Cliquez sur AJOUTER OU SUPPRIMER DES CHAMPS D'APPLICATION.
  • Tapez gmail dans le filtre.
  • Cochez : https://mail.google.com/ (Gérer vos emails).
  • Cliquez sur METTRE À JOUR, puis ENREGISTRER ET CONTINUER.
Étape 3.5 : Ajouter des utilisateurs test (Page 3/4)
  • Cliquez sur + AJOUTER DES UTILISATEURS.
  • Entrez votre email et ceux de vos testeurs.
  • Cliquez sur AJOUTER, puis ENREGISTRER ET CONTINUER.
⚠️ Seuls ces utilisateurs peuvent utiliser l’application en mode Test.
Étape 3.6 : Résumé (Page 4/4)
  • Vérifiez les informations et cliquez sur RETOUR AU TABLEAU DE BORD.

PARTIE 4 : CRÉER LES IDENTIFIANTS OAUTH (CLIENT ID)​

Étape 4.1 : Accéder aux identifiants
  • Dans APIs et services, cliquez sur Identifiants.
Étape 4.2 : Créer un ID client OAuth
  • Cliquez sur + CRÉER DES IDENTIFIANTS.
  • Sélectionnez ID client OAuth.
Étape 4.3 : Configurer le client
  • Type d'application : Application de bureau
  • Nom : Client Excel VBA
  • Cliquez sur CRÉER.
Étape 4.4 : Récupérer vos identifiants
  • ID client et Secret client s’affichent.
  • ⚠️ Sauvegardez-les immédiatement.
  • Cliquez sur TÉLÉCHARGER JSON pour garder une copie.
  • OU copiez manuellement les deux valeurs dans un fichier texte sécurisé.
  • Cliquez sur OK.
Conservez ces identifiants en lieu sûr !

PARTIE 5 : INTÉGRER LES IDENTIFIANTS DANS VOTRE CODE VBA​

Étape 5.1 : Modifier votre code
Remplacez les constantes fictives par vos identifiants :
Code:
Public Const OAUTH_CLIENT_ID As String = "123456789-xxxxxxxxx.apps.googleusercontent.com"
Public Const OAUTH_CLIENT_SECRET As String = "GOCSPX-xxxxxxxxxxxxxxxx"
Public Const OAUTH_SCOPE As String = "https://mail.google.com/"
Public Const OAUTH_REDIRECT As String = "http://localhost"

PARTIE 6 : TESTER VOTRE APPLICATION​

Étape 6.1 : Premier test
  • Lancez la macro TestToken.
  • Connectez-vous avec un compte Google présent dans la liste des testeurs.
  • Cliquez sur Continuer malgré l’avertissement Google.
  • Acceptez les autorisations demandées.
  • Copiez l’URL affichée dans le navigateur et collez-la dans Excel.
  • Si tout va bien : Access Token récupéré avec succès !
Étape 6.2 : Test suivant
  • Le refresh token est utilisé automatiquement, plus besoin de se reconnecter.

PARTIE 7 : PASSER EN PRODUCTION (Optionnel)​

  • Complétez l’écran de consentement avec toutes les informations obligatoires.
  • Cliquez sur PUBLIER L'APPLICATION > PRÉPARER LA VALIDATION.
  • Fournissez :
    • Justification pour accéder à Gmail
    • Vidéo de démonstration (YouTube)
    • Captures d’écran
  • La validation peut prendre plusieurs semaines.

RÉCAPITULATIF DES FICHIERS ET INFORMATIONS​

ÉlémentOù le trouverUtilité
Client IDGoogle Cloud Console > IdentifiantsPour le code VBA
Client SecretGoogle Cloud Console > IdentifiantsPour le code VBA
Fichier JSONTéléchargé lors de la créationBackup des identifiants
Refresh Token%TEMP%\gmail_token.txtPour éviter de se reconnecter
Access TokenGénéré à chaque exécutionPour accéder à Gmail

DÉPANNAGE COURANT​

  • Erreur 403 : access_denied
    → L’utilisateur n’est pas dans la liste des testeurs.
    → Solution : Ajoutez son email dans Audience > Utilisateurs test.
  • Erreur 400 : invalid_request
    → Le redirect_uri n’est pas correct.
    → Solution : Vérifiez que OAUTH_REDIRECT = "http://localhost" dans votre code.
  • Erreur : invalid_grant
    → Le code d’autorisation a expiré ou a déjà été utilisé.
    → Solution : Recommencez l’authentification et collez le code rapidement.
  • Refresh token non récupéré
    → L’application a déjà été autorisée une fois.
    → Solution : Révoquez l’accès sur Google Permissions et réessayez.

 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Réponses
5
Affichages
461
D
  • Question Question
Réponses
5
Affichages
162
Didierpasdoué
D
Réponses
12
Affichages
508
Réponses
1
Affichages
402
Retour