Erreur 429 composant ActiveX
Bonjour, je dois envoyer des fichiers PDF à une liste de contact mais le blocage se fait à l'ouverture de l'application Outlook. J'ai Windows 11 et l'application est bien visible et accessible depuis le démarrer, en revanche elle n'apparaît pas dans la liste d'application référencée dans VBA. Je ne la trouve pas non plus sur mon PC. Je suis bloquée.
Voici le détail :
Sub SendEmailsWithAttachments()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim ExcelSheet As Worksheet
Dim LastRow As Long
Dim i As Integer
Dim EmailTo As String
Dim PDFPath As String
Dim Subject As String
Dim Body As String
Set OutlookApp = CreateObject("Outlook.Application")
Set ExcelSheet = ThisWorkbook.Sheets("Feuil2") ' Nom de votre feuille Excel
LastRow = ExcelSheet.Cells(ExcelSheet.Rows.Count, "A").End(xlUp).Row ' Trouve la dernière ligne avec des données
For i = 2 To LastRow
EmailTo = ExcelSheet.Cells(i, 7).Value ' Colonne Email
PDFPath = ExcelSheet.Cells(i, 19).Value ' Colonne PDF
Subject = "ATTESTATION"
Body = "Bonjour, " 'confidentiel
Set OutlookMail = OutlookApp.CreateItem(0) ' Crée un nouvel e-mail
With OutlookMail
.To = EmailTo
.Subject = Subject
.Body = Body
.Attachments.Add PDFPath ' Ajoute le fichier PDF comme pièce jointe
.Send ' Envoie l'e-mail
End With
Next i
' Libérer la mémoire
Set OutlookMail = Nothing
MsgBox "Emails envoyés avec succès !", vbInformation
End Subedit modération : code mis entre balise </>, merci d'y penser à l'avenir.
Merci d'avance de votre aide.
Bonjour
Je pense que votre souci, vient du fait qu'Outlook est fermé lors de l'exécution du code
Voici ce que nous faisons en général
Sub EnvoyerEmail()
Dim OutApp As Object
Dim OutMail As Object
Dim WasClosed As Boolean
' Vérifie si Outlook est déjà ouvert
On Error Resume Next
Set OutApp = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then
' Si Outlook n'est pas ouvert, on le lance
Set OutApp = CreateObject("Outlook.Application")
WasClosed = True
End If
On Error GoTo 0
' Création du mail
Set OutMail = OutApp.CreateItem(0)
With OutMail
.Display
.To = "destinataire@example.com"
.CC = ""
.BCC = ""
.Subject = "Sujet du mail"
.HTMLBody = "Bonjour," & vbNewLine & "Ceci est un mail envoyé depuis Excel VBA." & .HTMLBody
'.Attachments.Add "C:\Chemin\vers\fichier.pdf" ' Pour ajouter une pièce jointe
.Send ' Envoie directement
' .Display ' Pour afficher avant envoi
End With
' Fermer Outlook si on l'a ouvert nous-même
If WasClosed Then OutApp.Quit
' Nettoyage des objets
Set OutMail = Nothing
Set OutApp = Nothing
End SubVoilà, ceci est un exemple pas le code que vous devez utiliser
Bonjour à vous deux,
j'ai de mon côté ceci :
Public Sub EnvoiAutomatiqueMail()
Dim OutlookApp As Object, OutlookMail As Object
Dim Adresse As String, Message As String, Sujet As String
'init des champs du message
' on récupère l'adresse oules adresses séparées par un point virgules dans la cellule A1
Adresse = [A1].Value
If Adresse = "" Then Exit Sub
' on récupère l'objet dans la cellule A2 en ajoutant un espace comme cela A2<>"" et évite la question :
' votre message n'a pas d'objet, voulez-vous l'envoyer comme même
Sujet = [A2].Value & " "
' on récupère le message en A3
Message = [A3].Value
' init du message pour OutLook
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.createitem(0)
With OutlookMail
.Subject = Sujet 'sujet du mail
.To = Adresse 'adresse mail destinataire
.body = Message 'corps du message
' affiche OutLook Avec le mail prêt à être envoyé
' .Display
' envoi le mail. Si on n'utilise pas le ".Display" alors l'envoie est "transparent" pour l'utilisateur
.Send 'on envoie le mail créé
End With
End Subqui fonctionne très bien.
Le fichier représentatif :
Il vous manque peut-être une librairie au niveau d'Excel ?
ha non ! Vu le message d'erreur ! Le bouton servant à lancer la procédure est un ActiveX ? Alors remplacez le par "une forme" sur laquelle vous affecterez la macro d'envoi du mail...
@ bientôt
LouReeD
Nota : la prochaine fois que vous éditez du code ici pensez à utiliser la balise </>, merci.
Hello,
le Outlook que tu as c'est bien celui d'Office ou bien celui de windows 11 car celui-ci n'a pas d'objet activeX
Ami calmant, J.P
Merci à vous pour votre aide !
J'ai testé le premier code sur la vérification de l'ouverture et cela a l'air de fonctionner, l'erreur (91) est désormais sur la création du mail
<Set OutlookMail = OutlookApp.CreateItem(0) ' Crée un nouvel e-mail>
J'ai retéléchargé l'application depuis Windows donc c'est une bonne remarque, ce n'est pas l'application du pack Office je pense.
Qu'en pensez-vous ?