J'ai crée un fichier avec des macros et code VBA sous Excel 2003. Ce fichier est principalement utilisé et sauvegardé au travail sur un PC qui utilise Excel 2007. A part quelques petit souci de mise en page (compatibilité...) rien de grave.
Mon code envoi une des feuilles en mail à plusieurs personnes.
Quand un destinataire qui tourne en Excel 2003/XP ouvre le fichier, le message "projet ou bibliotheque introuvable" apparaît dés qu'il va sélectionner une cellule.
Idem si je l'ouvre chez moi. Pourtant j'ai crée ce fichier depuis chez moi ...
Ayant déja rencontré ce type de problème, je regarde dans Outils/Références ...
J'ai une référence "MANQUANT : Microsoft Outlook 14.0 Object Library" qui semble donc poser un problème.
Comment solutionner ce problème ?
Faut il que je décoche cette références sur le poste ou est sauvegardé le fichier (avant l'envoie en mail)
Faut il que je décoche cette références sur chacun des postes où est ouvert le fichier ??
Si je décoche cette référence, cela ne va -t-il pas faire planter mon programme ?
Quand un destinataire qui tourne en Excel 2003/XP ouvre le fichier, le message "projet ou bibliotheque introuvable" apparaît dés qu'il va sélectionner une cellule.
Pour moi tu n'envoies pas seulement la feuille, mais le classeur en entier !?
Comme tu as Outlook2007 et pas ton destinataire, forcément la référence est manquante
Peux tu nous mettre ton code entre balise
Code:
et [/ code] (sans espace entre / et code)
A+[/COLOR][/LEFT]
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Re,
Le fichier est assez gros ...
Voici mon code qui envoie en mail :
Code:
Sub ENVOIE_MAIL()
Dim destinataires(3) As String, Sujet As String
Set Appli = New Outlook.Application
If Appli.Explorers.Count > 0 Then
GoTo envoiemail
Else
Dim ID As Integer
ID = Shell("C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE", windowsstyle = 4)
GoTo envoiemail
End If
envoiemail:
destinataires(1) = "toto@toto.com"
destinataires(2) = "tata@tata.com"
destinataires(3) = "titi@titi.com"
Sujet = [SAVE_FINAL]
'on ENVOIE !
ActiveWorkbook.SendMail destinataires, Sujet
[STATUS_MAIL] = "OUI"
[REVISION] = [REVISION] + 1
ActiveWorkbook.Save
End Sub
Effectivement, j'ai l'impression que j'envoie le classeur entier ...
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Re,
Voici le code pour n'envoyer qu'une feuille
VB:
Sub ENVOIE_MAIL()
Dim sPath As String, sFicTmp As String
Dim AppOl As New Outlook.Application
Dim Olmail As MailItem
Dim sDest As String, Sujet As String
' Définir le chemin et le nom du fichier temporaire
sPath = "C:\Temp\": sFicTmp = "NomFichier.xlsx"
' Copier la feuille dans un nouveau classeur
Sheets("NomFeuille").Copy
' Sauvegarder temporairement
With ActiveWorkbook
.SaveAs sPath & sFicTmp
.Close
End With
' Définir les destinataires
sDest = "toto@toto.com;tata@tata.com;titi@titi.com"
' Créer l'instance Outlook
Set AppOl = New Outlook.Application
Set Olmail = AppOl.CreateItem(olMailItem)
With Olmail
.To = sDest
'.CC = "adresse_email_copie"
.Subject = [SAVE_FINAL]
.Body = "corps du message"
.Attachments.Add sPath & sFicTmp
'.Display
.Send
End With
' Supprimer le fichier qui a servi temporairement
Kill sPath & sFicTmp
'
[STATUS_MAIL] = "OUI"
[REVISION] = [REVISION] + 1
ActiveWorkbook.Save
End Sub
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Bonjour le forum, BrunoM45,
J'ai effectué les modifications que tu m'as proposé. L'envoie de le feuille ce fait parfaitement (pour peu que le dossier "Temp" soit déjà crée .. mais je m'en suis sortie ...)
Même le message d'alerte d'envoie de mail en "sous marins" n'est plus !! (ce que je pensais impossible aprés des heures de recherches !!) Impeccable donc.
Cependant, un probleme subsiste toujours, l'envoie du fichier ce fait sur un poste XLS 2010. l'extention du fichier temporaire est xlsx par default. je souhaiterais le changer en xls.
1 raison, quand un destinataire sous xls 2003/XP ouvre la PJ recue, le convertisseur ne parviens pas à ouvrir le xlsx.
(conversion du fichie impossible)
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Salut guigui,
Je ne comprends pas, normalement ce code devrait fonctionner !?
VB:
Sub ENVOIE_MAIL()Dim sPath As String, sFicTmp As String
Dim AppOl As New Outlook.Application
Dim Olmail As MailItem
Dim sDest As String, Sujet As String
' Définir le chemin et le nom du fichier temporaire
sPath = "C:\Temp\": sFicTmp = "NomFichier.xls"
' Copier la feuille dans un nouveau classeur
Sheets("NomFeuille").Copy
' Sauvegarder temporairement
With ActiveWorkbook
.SaveAs Filename:=sPath & sFicTmp, FileFormat:=xlExcel8
.Close
End With
' Définir les destinataires
sDest = "toto@toto.com;tata@tata.com;titi@titi.com"
' Créer l'instance Outlook
Set AppOl = New Outlook.Application
Set Olmail = AppOl.CreateItem(olMailItem)
With Olmail
.To = sDest
'.CC = "adresse_email_copie"
.Subject = [SAVE_FINAL]
.Body = "corps du message"
.Attachments.Add sPath & sFicTmp
'.Display
.Send
End With
' Supprimer le fichier qui a servi temporairement
Kill sPath & sFicTmp
'
[STATUS_MAIL] = "OUI"
[REVISION] = [REVISION] + 1
ActiveWorkbook.Save
End Sub
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Bien le bonjour le forum, BrunoM45,
Alors effectivement ton code fonctionne. En adaptant à ma sauce, je change le nom du fichier temporaire :
VB:
' Définir le chemin et le nom du fichier temporaire
sPath = "C:\Temp\": sFicTmp = "NomFichier.xls"
en
VB:
' Définir le chemin et le nom du fichier temporaire
sPath = "C:\Temp\": sFicTmp = [SAVE FINAL] & ".xls"
et là .... c'es le drame ! pourtant je ne vois pas le problème dans ma syntaxe ... ?
Donc sans changer le nom, mon fichier est bien enregistré en xls et s'ouvre correctement sur les postes excel 2003/XP/2010..
Cependant je m’aperçois que mon problème initial est toujours présent !! et que je l'avais mal exposé.
Le fichier original, avec tous le code vba se situe sur un réseau.
Quand il est ouvert depuis un poste ayant excel 2010 ... aucun souci (à noter que c'est bien un fichier xls et non xlsx ou xlsm).
Quand il est ouvert depuis un poste ayant excel 2003/XP ... bug quand l'utilisateur clique sur une cellule.
Le souci viens bien d'une référence "MANQUANT : Microsoft Outlook 14.0 Object Library" sur les postes avec excel 2003.
Bien sur si je la "décoche", le sub concernant l'envoie en mail ne fonctionne plus ... bien évidemment
Une idée, solution ?
Problème donc résolu a moitié ... la version envoyé en mail étant maintenant clean de tous codes ou problèmes.
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Salut Guigui
Voici le code pour changer la référence en fonction du pack office installé
A mettre dans un module
VB:
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
A mettre dans ThisWorkbook
VB:
Private Sub Workbook_Open()
Call ActiveRef
End Sub
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Merveilleuse idée .. je pensais pas que cela était possible !!
Bon pour le coup j'ai un "erreur de chargement de la DLL" à l'ouverture du fichier ...
J'ai regardé dans mon explorateur, j'ai bien le fichier msoutl.olb dans OFFICE11
Par contre je ne le trouve pas dans mon OFFICE14, peut etre parceque je n'ai pas installé Outlook 2010 ? seulement excel.
Petite parenthese, la copie du fichier temporaire semble se faire avec une liaison ... je dis ca car en ouvrant le fichier envoyé en mail. excel me demande de mettre à jour les liaisons. ... je ne vois pas pourquoi des liaisons avec un sheet.copy !?
Bon pour le coup j'ai un "erreur de chargement de la DLL" à l'ouverture du fichier ...
J'ai regardé dans mon explorateur, j'ai bien le fichier msoutl.olb dans OFFICE11
Par contre je ne le trouve pas dans mon OFFICE14, peut etre parceque je n'ai pas installé Outlook 2010 ? seulement excel.
Petite parenthese, la copie du fichier temporaire semble se faire avec une liaison ... je dis ca car en ouvrant le fichier envoyé en mail. excel me demande de mettre à jour les liaisons. ... je ne vois pas pourquoi des liaisons avec un sheet.copy !?
En général il s'agit d'une formule qui fait référence à l'ancien classeur
Pour cela, il suffit d'aller voir dans le menu Liaison pour savoir
Sinon en modifiant le code
VB:
Sub ENVOIE_MAIL()
Dim sPath As String, sFicTmp As String
Dim AppOl As New Outlook.Application
Dim Olmail As MailItem
Dim sDest As String, Sujet As String
' Selon la version d'office
sVer = Application.Version
' Définir le chemin et le nom du fichier temporaire
sPath = "C:\Temp\": sFicTmp = "NomFichier.xls"
' Copier la feuille dans un nouveau classeur
Sheets("NomFeuille").Copy
' Sauvegarder temporairement
With ActiveWorkbook
' Copier/coller valeur
With ActiveSheet
.Cells.Copy
.Cells.PasteSpecial Paste:=xlPasteValues
.Range("A1").Select
Application.CutCopyMode = False
End With
.SaveAs Filename:=sPath & sFicTmp, FileFormat:=xlExcel8
.Close
End With
' Définir les destinataires
sDest = "toto@toto.com;tata@tata.com;titi@titi.com"
' Créer l'instance Outlook
Set AppOl = New Outlook.Application
Set Olmail = AppOl.CreateItem(olMailItem)
With Olmail
.To = sDest
'.CC = "adresse_email_copie"
.Subject = [SAVE_FINAL]
.Body = "corps du message"
.Attachments.Add sPath & sFicTmp
'.Display
.Send
End With
' Supprimer le fichier qui a servi temporairement
Kill sPath & sFicTmp
'
[STATUS_MAIL] = "OUI"
[REVISION] = [REVISION] + 1
ActiveWorkbook.Save
End Sub
Re : "projet ou bibliotheque introuvable" suivant version utlisé
Bonjour le forum, BrunoM45,
Alors j'ai testé le code pour les références au travail, pas de message d'erreur concernant les DLL, mais .. rien ne se passe.
Quand j'ouvre le fichier original depuis le réseau sur un poste excel 2003. rien ne se produit niveau référence.
En "mode pas à pas", le code détecte bien la version "11.0", poursuit correctement le code ... mais RAS
Quand je fais moi même la manip, dans "outils / références" j'ai bien "MANQUANT : Microsoft Outlook 14.0 Object Library" qui est coché.
Je vais chercher dans la liste le "Microsoft Outlook 11.0 Object Library" que je coche.
En validant, j'ai un message "Nom de module, de projet ou de bibliothèque d'objet déjà utilisé"
Ok. je décoche le "MANQUANT : Microsoft Outlook 14.0 Object Library" et recoche mon "11.0", valide et tout va bien.
BrunoM45, as tu une idée ? peut être faut-il codé le fait de décharger la référence manquante avant de charger celle correspondant à la version d'excel ... ?
(je n'ai pas eu le temps de testé la modif pour les liaisons je regarde ca cette aprem au boulot)
Merci