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 Sub

Etant 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.Application

Erreur 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 Sub

Puré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.

Rechercher des sujets similaires à "erreur chargement dll"