Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur actif

famu

XLDnaute Occasionnel
Bonjour à tous,
J'utilise une macro de Jacques Boigontier ("Envoi par OutLook d'un onglet du classeur actif") qui fonctionne très bien (merci Jacques pour votre travail !), hormis le fait que je dois l'utiliser sur 2 PC. L'un tourne avec Office 2010 et l'autre avec Office 2007. Voici le code de Jacques :

Sub envoi_Feuille()
répertoireAppli = ActiveWorkbook.Path
Sheets("résultats").Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs répertoireAppli & "\Resultats.xls"
ActiveWindow.Close
'--- Envoi par mail
Dim olapp As Outlook.Application 'dans Outils/Références cocher OutLook
Sheets("destinataires").Select
Range("A11").Select
Do While Not IsEmpty(ActiveCell)
Dim msg As MailItem
Set olapp = New Outlook.Application
Set msg = olapp.CreateItem(olMailItem)
msg.To = ActiveCell.Value
msg.Subject = Range("A2").Value
msg.Body = Range("A5").Value & Chr(13) & Chr(13) & Range("A8").Value & Chr(13) & Chr(13)
msg.Attachments.Add Source:=répertoireAppli & "\Resultats.xls"
msg.Send
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Mon PROBLEME : avec Office 2010, "Outils/Références cocher OutLook" fait référence à "Microsoft Outlook 14.0 Object Library" alors que Office 2007 fait référence à "Microsoft Outlook 12.0 Object Library". Impossible de m'en sortir !
Une idée pour contourner le problème ?
Merci beaucoup pour votre aide.
 

tototiti2008

XLDnaute Barbatruc
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

Bonjour famu,

Comme solution, je te propose de ne pas cocher la référence Outlook :)
Il va falloir que tu m'aides, je n'ai pas d'Outlook sous la main
Pour l'instant, laisse la référence cohée, va dans l'explorateur d'objets et cherche la valeur de la constante olMailItem
note sa valeur
Décoches ta référence à Outlook

modifie légèrement le code comme ça :
remplace le ###olMailItem### du code proposé par la valeur que tu as noté

Code:
Sub envoi_Feuille()
répertoireAppli = ActiveWorkbook.Path
Sheets("résultats").Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs répertoireAppli & "\Resultats.xls"
ActiveWindow.Close
'--- Envoi par mail
Dim olapp As Object 'Outlook.Application
Sheets("destinataires").Select
Range("A11").Select
Set olapp = CreateObject("Outlook.Application")
Do While Not IsEmpty(ActiveCell)
Dim msg As Object 'MailItem
Set msg = olapp.CreateItem(###olMailItem###)
msg.To = ActiveCell.Value
msg.Subject = Range("A2").Value
msg.Body = Range("A5").Value & Chr(13) & Chr(13) & Range("A8").Value & Chr(13) & Chr(13)
msg.Attachments.Add Source:=répertoireAppli & "\Resultats.xls"
msg.Send
ActiveCell.Offset(1, 0).Select
Loop
Set msg = Nothing
Set olapp = Nothing
End Sub

et dis-nous ce que ça donne ;)
 

famu

XLDnaute Occasionnel
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

La case cochée, j'exécute la macro pas à pas : la valeur olMailItem est égale à "0". Je décoche la case dans Outil/Référence. Le remplace olMailItem par 0. J'exécute la macro : erreur de complilation, object non défini : olapp As Outlook.Application.
 

Gelinotte

XLDnaute Accro
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

Bonjour tototiti2008,

Ton code fonctionne bien, excepté qu'il n'accepte pas de fichier attaché.

msg.Attachments.Add Source:=répertoireAppli & "\Resultats.xls"

Si je mets cette ligne en remarque :
' msg.Attachments.Add Source:=répertoireAppli & "\Resultats.xls"
il fonctionnne.

Ce n'est pas non plus une erreur d'accès car avec le code de famu, le fichier attaché s'insère correctement et la ligne est la même.

G
 

famu

XLDnaute Occasionnel
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

J'avais pas tout lu ! ! !
En modifiant tout ce que tu as dit, la macro ce bloque ici : Msg.Attachments.Add Source:=répertoireAppli & "\Resultats.xls" : erreur d'exécution 446 (cet objet ne gère pas les arguments nommés)
 

tototiti2008

XLDnaute Barbatruc
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

Bonjour Gelinotte,
Re,

Ah, les arguments nommés posent problème ? désolé, pas d'Outlook pour tester

et comme ça ?

Code:
msg.Attachments.Add répertoireAppli & "\Resultats.xls"
 

famu

XLDnaute Occasionnel
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

Alors voilà : çA MARCHE !
ça passe avec 2010, et je viens d'essayer sur 2007 mais je n'avais pas Outlook. Le code a bloqué car il n'a pas pu envoyer le fichier mais celui-ci avait bien été crée. Je pense que ça devrait fonctionner. Demain j'essaie sur le bon PC et reviens vers vous si pb. Mais je suis assez confiant. MERCIIIIIIIIII...
Bonne soirée,
Famu.
 

Gelinotte

XLDnaute Accro
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

Bonjour,

Testé sous Office 2010 et Office 2007, le code fonctionne à merveille. Le courriel s'envoie avec la pièce jointe.

Je m'excuse de m'être inséré dans ce fil, mais j'ai un problème semblable au travail et vous venez de le régler.

Je remercie grandement famu d'avoir poser la question et tototiti2008 d'avoir donner la solution.

:cool:

G
 

david84

XLDnaute Barbatruc
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

Bonjour,
Merci à Marc pour cette façon de procéder que je ne connaissais pas.
Ci-joint un code permettant d'activer la référence Outlook (à placer dans un module) :
Code:
Public Sub ActiveRef()
  Dim sPathProg As String
  'Active la référence à Outlook selon la version d'Office


  ' Version de windows 32 ou 64 bits
 Select Case InStr(1, Application.Path, "(x86)")
  Case 0
    sPathProg = "C:\Program Files\"
  Case Is > 0
    sPathProg = "C:\Program Files (x86)\"
  End Select


  ' Selon la version d'office
 Select Case Application.Version
  Case "11.0"
    Call Addref(sPathProg & "\Microsoft Office\OFFICE11\msoutl.olb")
  Case "12.0"  ' Office 2007
   Call Addref(sPathProg & "\Microsoft Office\OFFICE12\msoutl.olb")
  Case "14.0"  ' Office 2010
   Call Addref(sPathProg & "\Microsoft Office\OFFICE14\msoutl.olb")
  End Select
End Sub


Sub Addref(AdresseRef As String)
  On Error Resume Next
  ThisWorkbook.VBProject.References.AddFromFile AdresseRef
End Sub
et dans Workbook_Open :
Code:
Private Sub Workbook_Open()
  Call ActiveRef
End Sub
A+
 

famu

XLDnaute Occasionnel
Re : Outils/Références cocher OutLook : Envoi par OutLook d'un onglet du classeur act

Bonjour,

Testé sous Office 2010 et Office 2007, le code fonctionne à merveille. Le courriel s'envoie avec la pièce jointe.

Je m'excuse de m'être inséré dans ce fil, mais j'ai un problème semblable au travail et vous venez de le régler.

Je remercie grandement famu d'avoir poser la question et tototiti2008 d'avoir donner la solution.

:cool:

G
Pas de souci. Content que mon problème concerne quelqu'un d'autre que moi.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 197
Membres
103 153
dernier inscrit
SamirN