Convertir un early binding en Late binding

bouclesdor

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin de votre aide pour m'aider à résoudre un problème. J'ai excel 2013 et mes collègues ont excel 2007. J'ai un code VBA qui utilisait la référence Microsoft outlook library 15.0 mais mes collègues sont incapable d'utiliser le fichier car leur référence outlook est library 12.0. J'ai vu sur internet que pour résoudre mon problème je devais faire un late Binding mais je n'y arrive pas....

Voici le début de mon code que j'ai déjà remplacé les champs

Sub Make_Outlook_Mail_With_File_Link_display()
'For Tips see: Excel Automation - Ron de Bruin
'Working in Excel 2000-2013
Dim OutApp As Object 'Outlook.Application
Dim OutMail As Object 'Outlook.MailItem
Dim StrBody As String
Dim PJ As String
Dim Annee As String
Dim SigString As String
Dim signature As String

If ActiveWorkbook.Path <> "" Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(o) ''' *** je crois que c'est ce bout là que je n'écris pas comme il faut...

merci à l'avacne de votre aide et bonne soirée,

Bouclesdor
 

Roland_M

XLDnaute Barbatruc
Re : Convertir un early binding en Late binding

bonsoir

exemple pour une lecture de répertoire

'déclaration anticipée
'Dim FSO As Scripting.FileSystemObject
'Set FSO = New Scripting.FileSystemObject
'Dim SousDossier As Folder
'utilisation
'For Each SousDossier In FSO.GetFolder(PathBase$).SubFolders

'déclaration tardive
'Set FSO = CreateObject("Scripting.FileSystemObject")
'Set SourceFolder = FSO.GetFolder(PathBase$)
'utilisation
'For Each SubFolder In SourceFolder.SubFolders

EDIT:

je n'ai pas outlook mais j'ai retrouvé ceci que j'ai déjà refilé
Code:
Sub ExempleOutlook()
Dim OutApp As Object, OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error GoTo Erreur
With OutMail
 .To = AdresDestinMail$
 .CC = AdresMailCC$
 .BCC = AdresMailBCC$
 .Subject = Sujet$
 .Body = Message$
'.Attachments.Add CheminFichier$
'.Send '<<<<<<<<<<<< Pour envoyer directement
 .Display '<<<<<<<<< Pour voir le mail avant envoi
 'après .Display pour sauter message de confirmation> SendKeys "^{ENTER}"
End With
'...
'...
Set OutApp = Nothing: Set OutMail = Nothing
On Error GoTo 0: Err.Clear
Exit Sub
Erreur: ' sous prog erreur
Msg$ = "Erreur " & Err.Source & "  No " & Err.Number & vbLf & vbLf & Err.Description
T$ = "Envoi Mail: Problème de connexion !?"
MsgBox Msg$, vbCritical, T$, Err.HelpFile, Err.HelpContext
On Error GoTo 0: Err.Clear
End Sub
 
Dernière édition:

bouclesdor

XLDnaute Occasionnel
Re : Convertir un early binding en Late binding

Bonjour Roland_M,

Merci infiniement pour votre réponse.

J'ai regardé votre code VBA qui utilisait le même genre de code que moi et tout semble similiaire...

Par contre je me suis mal exprimée hier en disant que ça ne fonctionnait pas car je peux rouler mon code sur mon poste de travail et un courriel est créé mais plus loin j'ai une ligne qui dit de quel compte outlook je veux que le message soit envoyé, car j'ai 3 comptes sur mon poste de travail, et c'est là qu'il y a un erreur car il ne choisit pas mon compte #1... Avant, quand j'utilisiais la déclaration anticipée, ça fonctionnait très bien mais là ça ne semble pas compatible avec la déclaration tardive... j'imagine que je dois adapter mon code mais comment....

Voici mon code au complet...


Sub Make_Outlook_Mail_With_File_Link_displaytestttttt()
'For Tips see: Excel Automation - Ron de Bruin
'Working in Excel 2000-2013
Dim OutApp As Object 'Outlook.Application
Dim OutMail As Object 'Outlook.MailItem
Dim StrBody As String
Dim PJ As String
Dim Annee As String
Dim SigString As String
Dim signature As String

Annee = Range("ab1").Value

Sheets("PO").CheckBox9 = True

If ActiveWorkbook.Path <> "" Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

StrBody = "<font size=""3"" face=""Calibri"">" & _
"blablablabla,<br><br>" & _
"<br><br>Merci,<br> </font>"


'Change only Mysig.htm to the name of your signature
SigString = Environ("appdata") & _
"\Microsoft\Signatures\ST PO.htm"

If Dir(SigString) <> "" Then
signature = GetBoiler(SigString)
Else
signature = ""
End If

On Error Resume Next
With OutMail
.To = "courriel@blablabla.com"
.CC = ""
.BCC = ""

.Subject = ActiveWorkbook.Name
.HTMLBody = StrBody & "<br>" & signature 'signature

'SendUsingAccount is new in Office 2007
'Change Item(1)to the account number that you want to use
.SendUsingAccount = OutApp.Session.Accounts.Item(1)
'***** c'est ici que mon compte outlook #1 devrait être choisi mais peut importe le chiffre que je mets entre parenthèse, il reste avec le même compte et ce n'est même pas le compte par défaut que j'ai identifié dans outlook c'est la première adresse qui a été créé dans outlook... ******

.Display 'or use .Send ou .display

End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
Else
MsgBox "Ce fichier n'est pas enregistrer, vous devez enregistrer le fichier avant de pouvoir l'envoyer par e-mail."
End If

End Sub

Je vais continuer à pousser mes recherches...

Merci à l'avance de votre aide et bonne journée,

Bouclesdor
 

bouclesdor

XLDnaute Occasionnel
Re : Convertir un early binding en Late binding

J'ai trouvé sur un forum une personne qui avait le même problème lors de la conversion de la déclaration anticipé à tardive.

Donc ça prend un petit "SET" avant le code .SendUsingAccount = OutApp.Session.Accounts.Item(1).

Le bon code est donc:
Set .SendUsingAccount = OutApp.Session.Accounts.Item(1)

Un gros merci Roland_M pour ta réponse qui m'a confirmer que le début de mon code était bon alors j'ai cherché vers la fin de mon code!! :)

Bonne journée,

Bouclesdor
 

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 088 004
Membres
103 695
dernier inscrit
acimi