Erreur chargement DLL
Bonjour,
J'utilise la version 16 d'Excel quand je suis sur mon poste du travail.
Je viens remplacer un collègue qui lui utilise la 15.
J'ai donc un problème pusique dès que j'ouvre un fichier contenant un code VBA et que j'essaie d'aller dans Développeur -> Visuel Basic, j'ai "Erreur de chargement de la DLL". En appuyant plusieurs fois sur "ok" il m'ouvre la fenêtre.
En allant dans outils-> références, j'ai un "MANQUANT : Microsoft Outlook 16.0 Objet LIbrary".
Mon bout de code VBA sert a envoyer des emails.
J'ai essayé de décocher la ligne "Manquant" mais dès que je le fais et ferme la petite fenêtre contextuelle, j'ai m'affiche à nouveau "Erreur de chargement de la DLL".
Peut-être qu'une mise à jour pourrait résoudre tout ces problèmes mais malheureusement je ne suis pas administrateur.
Une idée ?
Je vous remercie d'avance.
bonjour,
regarde si tu n'as pas sur cette machine une autre version de la librairie microsoft outlook (la 15 ?) et active cette version sur la machine en question. Tu peux aussi rendre ton code indépendant de la version en utilisant le "late binding", dans ce cas pas besoin d'ajouter la référence dans VBE. VBA prendra la librairie disponible sur la machine.
Grand merci à toi. Je ne connaissais pas du tout cette notion de "late blinding".
Sur ce poste j'ai la version 15 que j'ai activé du coup mais j'ai des erreurs. Mon code ne fonctionne pas.
Voici mon code :
Sub envoi_01()
'Must add references (Tools > References) to
' 1) OLE Automation
' 2) Microsoft Outlook xx.0 Object Library
Dim outlookApp As Outlook.Application
Dim adresse_mail As String
Dim repertoire As String
Dim myMail As Outlook.MailItem
Dim Source_File As String
Dim annee As String
Dim periode As String
Dim email As String
Dim emailcopie As String
Dim montant As String
periode = "10.2021"
Worksheets("01").Activate
'montant = Application.InputBox("Le montant des honoraires ?", Type:=1)
repertoire = Selection.Offset(0, 3)
email = Selection.Offset(0, 1)
emailcopie = Selection.Offset(0, 2)
'Place l'utilisateur dans le bon répertoire
'ChDrive "W" ' <<< lettre disque
'ChDir repertoire
ChDrive "W"
ChDir repertoire
Source_File = Application.GetOpenFilename
Workbooks.Open Source_File ' <<<< ajout pour ouvrir le fichier choisi
'Defiler jusqu'a la derniere ligne du fichier
Sheets(1).Range("P" & Rows.Count).End(xlUp).Select
montant = Sheets(1).Range("Q" & Rows.Count).End(xlUp).Value
'Marquer une pause d'une seconde avant de passer à la suite.
'Sans la pause, le mail s'affiche alors que la PJ n'a pas eu le temps de se charger
Application.Wait (Now + TimeValue("0:00:1"))
Set outlookApp = New Outlook.Application
Set myMail = outlookApp.CreateItem(olMailItem)
myMail.To = email
myMail.CC = emailcopie
myMail.Subject = "Honoraires hosp " & periode & ""
myMail.HTMLBody = "Bonjour,<br> <br> Vous trouverez ci-joint la liste des honoraires pour le " & periode & " - (" & montant & " CHF).<br>" _
& "Le paiement a été exécuté le 24/11/2021.<br><br>" _
& "Nous restons à votre disposition pour tout renseignement complémentaire et vous présentons nos meilleures salutations." _
& "<br><br> Monsieurxxxxxx <br>Service Comptabilité"
myMail.Attachments.Add Source_File
myMail.Display True
'myMail.Send
End SubEtant un débutant, je ne sais pas comment adapter la notion de "late blinding" à ce code.
Peux-tu m'aider s'il te plait ?
En séléctionnant la bibliotheque Office 15 ça ne marche toujours pas.
L'erreur arrive dès le début sur :
Dim outlookApp As Outlook.ApplicationErreur de compilation : Type défini par l'utilisateur non défini
Je te remercie d'avance pour ton aide.
bonjour,
code adapté avec late_binding. (Mais je soupçonne que la librairie Outlook n'est pas disponible sur la machine en question, auquel cas cette correction ne fonctionnera pas non plus). A tester
Sub envoi_01()
'Must add references (Tools > References) to
' 1) OLE Automation
' 2) Microsoft Outlook xx.0 Object Library
Dim outlookApp As Object
Dim adresse_mail As String
Dim repertoire As String
Dim myMail As Object
Dim Source_File As String
Dim annee As String
Dim periode As String
Dim email As String
Dim emailcopie As String
Dim montant As String
periode = "10.2021"
Worksheets("01").Activate
'montant = Application.InputBox("Le montant des honoraires ?", Type:=1)
repertoire = Selection.Offset(0, 3)
email = Selection.Offset(0, 1)
emailcopie = Selection.Offset(0, 2)
'Place l'utilisateur dans le bon répertoire
'ChDrive "W" ' <<< lettre disque
'ChDir repertoire
ChDrive "W"
ChDir repertoire
Source_File = Application.GetOpenFilename
Workbooks.Open Source_File ' <<<< ajout pour ouvrir le fichier choisi
'Defiler jusqu'a la derniere ligne du fichier
Sheets(1).Range("P" & Rows.Count).End(xlUp).Select
montant = Sheets(1).Range("Q" & Rows.Count).End(xlUp).Value
'Marquer une pause d'une seconde avant de passer à la suite.
'Sans la pause, le mail s'affiche alors que la PJ n'a pas eu le temps de se charger
Application.Wait (Now + TimeValue("0:00:1"))
Set outlookApp = CreateObject("outlook.application")
Set myMail = outlookApp.CreateItem(0)
myMail.To = email
myMail.CC = emailcopie
myMail.Subject = "Honoraires hosp " & periode & ""
myMail.HTMLBody = "Bonjour,<br> <br> Vous trouverez ci-joint la liste des honoraires pour le " & periode & " - (" & montant & " CHF).<br>" _
& "Le paiement a été exécuté le 24/11/2021.<br><br>" _
& "Nous restons à votre disposition pour tout renseignement complémentaire et vous présentons nos meilleures salutations." _
& "<br><br> Monsieurxxxxxx <br>Service Comptabilité"
myMail.Attachments.Add Source_File
myMail.Display True
'myMail.Send
End SubPurée. Un immense merci pour votre travail et votre rapidité.
Ce code fait parfaitement son travail. Je n'ai pas eu de problème lors de son exécution.
Je regarderai pour comprendre les changement et apprendre plus sur cette pratique.
Encore un grand grand merci et très bonne journée à vous.
re-bonjour,
Je n'ai pas eu de problème lors de son exécution.Alors ton code aurait dû fonctionner, si la référence pour la librairie Outlook était bien activée. Enfin, ce qui compte c'est que cela fonctionne.