"projet ou bibliotheque introuvable" suivant version utlisé

Guigui

XLDnaute Occasionnel
Bonjour le forum,

Voilà, mon problème.

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 ?

Merci par avance pour votre aide.
Guillaume
 
C

Compte Supprimé 979

Guest
Re : "projet ou bibliotheque introuvable" suivant version utlisé

Bonjour Guigui

Sans fichier, difficile de t'aider, mais bon :rolleyes:

Si j'ai bien compris
Mon code envoi une des feuilles en mail à plusieurs personnes.
Donc cette feuille ne doit pas avoir de code VBA
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]
 

Guigui

XLDnaute Occasionnel
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 ...

un idée ?

Guillaume
 
C

Compte Supprimé 979

Guest
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

A+
 
Dernière modification par un modérateur:

Guigui

XLDnaute Occasionnel
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)

J'ai essayé de rajouter :
Code:
.SaveAs sPath & sFicTmp, FileFormat:=xlExcel8
et/ou de modifier
Code:
 sPath = "C:\Temp\": sFicTmp = "NomFichier.xlsx"
en
Code:
 sPath = "C:\Temp\": sFicTmp = "NomFichier.xls"
mais rien n'y fait j'ai toujours une erreur ..

As tu une solution a me proposer ?

Guillaume
 
C

Compte Supprimé 979

Guest
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

Testes et dis nous ;)

A+
 

Guigui

XLDnaute Occasionnel
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.

Guillaume
 
C

Compte Supprimé 979

Guest
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

A tester et dis nous

A+
 

Guigui

XLDnaute Occasionnel
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 !?
 
C

Compte Supprimé 979

Guest
Re : "projet ou bibliotheque introuvable" suivant version utlisé

Salut Guigui

Merveilleuse idée .. je pensais pas que cela était possible !!
Beaucoup de chose sont possible en programmation ;)
Et même quand cela te semble impossible, il y'a un petit génie qui te trouve une solution

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.
Là, je ne peux pas te dire, je ne vois pas pourquoi cette erreur !?

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

A+
 

Guigui

XLDnaute Occasionnel
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

Guillaume
 

Discussions similaires

  • Résolu(e)
Microsoft 365 32 ou 64 bits
Réponses
46
Affichages
1 K

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh