Activation et désactivation Références VBA Project avec Excel 2003 et 2010 [Résolu]

Signaler
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020
-
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020
-
Bonjour
Mes utilisateurs doivent pouvoir, sous Excel, en cliquant sur un bouton, affecté à une macro, envoyer un mail.
Le mail se crée automatiquement sous Outlook si on enregistre le fichier avec Excel 2003 après avoir activé « Microsoft Outlook 11.0 Object Library » ça marche avec les deux versions d'Excel.
Excel 2010 active automatiquement « Microsoft Outlook 14.0 Object Library ».
Le problème c'est l'inverse si je fais la même opération en partant d'Excel 2010, Excel 2003 ne trouve pas « Microsoft Outlook 14.0 Object Library », le marque "MANQUANT" et rien ne fonctionne.
Avez-vous un code VBA qui me permettrait d'activer ou de désactiver à volonté "Microsoft Outlook Object Library" version 11.0 et 14.0 avec les 2 programmes ?
Merci d'avance
Thierry97100

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Oups ! J'ai "donné" sans le vouloir dans le porno !
Corriger ===>> Late Bonding ===>> Late Binding


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Bonjour,

D'après ce bout de code, tu n'as pas suivi ce que ucfoutu te disait...

Cette macro devrait pouvoir fonctionner même si tu décoches la référence à Outlook, ce que tu devrais faire pour la portabilité.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
... suite

Par contre, pour fins de test, c'est bien de créer une référence.
Par la suite, quand tu as bien tout testé et que tout fonctionne bien, tu enlèves les références et utilises CreateObject

Le fait d'avoir des références te permet de voir les différentes méthodes, propriétés,... ce que tu ne peux pas en mode CreateObject


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
Supprime ces références à Outlook et utilise la liaison tardive (Late Bonding), en créant un objet Outlook à l'aide de CreateObject, genre

dim toto as object
set toto = CreateObject("Outlook.Application")

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020

Merci pour ta réponse.
je joins ma macro pour plus de compréhension.
**************************

Private Sub CommandButton1_Click()

Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Dim Fichier As String
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim Temp As String
Dim Vers As Long

Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olmailItem)

Vers = Val(Application.Version)

Set Sourcewb = ActiveWorkbook
ActiveSheet.Copy
Set Destwb = ActiveWorkbook

If Vers = 14 Then
Temp = Environ("TEMP") & "\Demande_assistance_" & Timer & ".xlsm"
Destwb.SaveAs Temp, FileFormat:=52
GoTo Enregistrement
ElseIf Vers = 12 Then
Temp = Environ("TEMP") & "\Demande_assistance_" & Timer & ".xlsx"
ElseIf Vers = 11 Then
Temp = Environ("TEMP") & "\Demande_assistance_" & Timer & ".xls"
End If

Destwb.SaveAs Temp
Enregistrement:
Fichier = Destwb.Path & Application.PathSeparator & Destwb.Name
Destwb.Close

With olmail
.To = "Assistance"
.Subject = Range("B8").Value & " / Fiche DS / " & Range("A1").Value
.Body = Range("B4").Value & ". Voir document joint."
.Attachments.Add Fichier
.Display
End With
End Sub
*************************

Dis-moi ce que tu en penses.

Thierry97100
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
J'ai répondu, me semble-t-il, à la seule question que posait la discussion ouverte. Elle était relative à un seul aspect : celui de références à cocher entre une version et l'autre.
Je t'ai dit comment ne pas utiliser du tout ces références et les remplacer par du "Late Binding".
Je ne comprends donc même pas pourquoi tu nous montres le reste de ta macro.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020

Je voulais juste avoir ton avis.
Encore merci pour ton aide.
bonne journée.

Thierry97100
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020

le code est l'ancien code avant les recommandations de ucfoutu. Je suis en train de mettre en pratique ses conseils.
Merci pour vos posts

Thierry97100