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

cs_thierry97100 9 Messages postés lundi 17 novembre 2008Date d'inscription 9 mars 2018 Dernière intervention - 15 mai 2013 à 05:10 - Dernière réponse : cs_thierry97100 9 Messages postés lundi 17 novembre 2008Date d'inscription 9 mars 2018 Dernière intervention
- 15 mai 2013 à 23:00
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
Afficher la suite 

8 réponses

Répondre au sujet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 mai 2013 à 06:59
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ucfoutu
cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 15 mai 2013 à 17:25
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MPi
cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 15 mai 2013 à 17:28
+3
Utile
... 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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MPi
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 mai 2013 à 06:35
+1
Utile
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.
Commenter la réponse de ucfoutu
cs_thierry97100 9 Messages postés lundi 17 novembre 2008Date d'inscription 9 mars 2018 Dernière intervention - 15 mai 2013 à 07:57
0
Utile
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
Commenter la réponse de cs_thierry97100
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 mai 2013 à 08:16
0
Utile
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.
Commenter la réponse de ucfoutu
cs_thierry97100 9 Messages postés lundi 17 novembre 2008Date d'inscription 9 mars 2018 Dernière intervention - 15 mai 2013 à 11:37
0
Utile
Je voulais juste avoir ton avis.
Encore merci pour ton aide.
bonne journée.

Thierry97100
Commenter la réponse de cs_thierry97100
cs_thierry97100 9 Messages postés lundi 17 novembre 2008Date d'inscription 9 mars 2018 Dernière intervention - 15 mai 2013 à 23:00
0
Utile
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
Commenter la réponse de cs_thierry97100

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.