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

Résolu
cs_thierry97100
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020
- 15 mai 2013 à 05:10
cs_thierry97100
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020
- 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

8 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
15 mai 2013 à 06:59
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.
3
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
15 mai 2013 à 17:25
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
3
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
15 mai 2013 à 17:28
... 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
3
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
15 mai 2013 à 06:35
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.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

15 mai 2013 à 07:57
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
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
15 mai 2013 à 08:16
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.
0
cs_thierry97100
Messages postés
10
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2020

15 mai 2013 à 11:37
Je voulais juste avoir ton avis.
Encore merci pour ton aide.
bonne journée.

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

15 mai 2013 à 23:00
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
0