Erreur de compilation, Projet ou bibliothèque introuvables

Erreur de compilation, Projet ou bibliothèque introuvables - VB/VBA/VBS - Programmation

Marsh Posté le 08-07-2011 à 10:00:52    

Bonjour,
 
J'ai une personne qui utilise une macro à partir de son poste, qui se trouve sur un répertoire partagé, elle fonctionne très bien. Par contre, si je veux l'utiliser de mon poste mais toujours sur le répertoire partagé, elle ne fonctionne plus, j'ai le message d'erreur suiivant : Erreur de compilation, Projet ou bibliothèque introuvables.
 
De quoi cela peut-il venir?
 
Je vous remercie pour vos réponses
 
Alice

Reply

Marsh Posté le 08-07-2011 à 10:00:52   

Reply

Marsh Posté le 08-07-2011 à 10:05:17    

1. Quel logiciel ?
VB ?, VBA de Access ? VBA de Excel ? autre ?
 
2. Quel projet ou bibliothèque introuvable ?
Il faudrait nous indiquer le nom. Cela aiderait beaucoup.
 
Si c'est Access, alors il faudrait vérifier les "Références".
 
Si le message concerne ODBC, alors il faudrait voir la configuration du PC pour ODBC.
 
Si c'est autre chose...

Reply

Marsh Posté le 08-07-2011 à 10:20:03    

Oups désolée,
 
C'est sous VBA de Excel
 
Pour la 2ème question, voilà une partie du code, à priori, :
 
Sub Remplir()
 
Dim shtMacro As Excel.Worksheet
Dim Fichier_OPL As Excel.Worksheet
Dim a, b, C As Integer
Dim d, e, v As String
 
Set shtMacro = ActiveSheet
Cells(60, 1).Select
v = ActiveCell
line30:
SaisieChemin = InputBox("ATTENTION : Vérifier le chemin d'accès souhaité ! Si les fichiers existent déjà, ils seront écrasés !", "Saisir le chemin d'accès pour stocker les fichiers word", v, 5000, 7000)
Cells(60, 1).Select
If SaisieChemin = "" Then GoTo line10
ActiveCell.Formula = SaisieChemin
v = SaisieChemin
t = 0
p = 1
i = 2
Do
t = t + 1
If t = 1 Then GoTo line24
If t = 2 Then GoTo line25
If t = 3 Then GoTo line26
If t = 4 Then GoTo Line2222
If t > 4 Then GoTo Line302
line24:
FichierOPL = v & "\Fichiers Commandes-Fatures ADP.xls"
     Workbooks.OpenText FichierOPL, xlWindows, 1, xlDelimited, xlTextQualifierDoubleQuote, _
            False, True, True, False, False, False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1)), TrailingMinusNumbers:=True
Application.ScreenUpdating = True
Set Fichier_OPL = ActiveSheet
Fichier_OPL.Activate
 
 
 
 
 
 

olivthill a écrit :

1. Quel logiciel ?
VB ?, VBA de Access ? VBA de Excel ? autre ?
 
2. Quel projet ou bibliothèque introuvable ?
Il faudrait nous indiquer le nom. Cela aiderait beaucoup.
 
Si c'est Access, alors il faudrait vérifier les "Références".
 
Si le message concerne ODBC, alors il faudrait voir la configuration du PC pour ODBC.
 
Si c'est autre chose...


Reply

Marsh Posté le 08-07-2011 à 11:40:14    

Il n'y a pas le nom de ce qui est introuvable  :(  
Ni la ligne où le programme s'arrête  :(  
 
Si le problème concernerait la ligne

SaisieChemin = InputBox("ATTENTION : Vérifier le chemin d'accès souhaité ! Si les fichiers existent déjà, ils seront écrasés !", "Saisir le chemin d'accès pour stocker les fichiers word", v, 5000, 7000)

Alors ce serait sans doute parce que la ligne est trop longue ou mal coupée. Il faudrait essayer :

SaisieChemin = InputBox("ATTENTION : Vérifier le chemin d'accès souhaité !" & _
" Si les fichiers existent déjà, ils seront écrasés !", _
"Saisir le chemin d'accès pour stocker les fichiers word", v, 5000, 7000)


 
Si le problème concernerait les deux lignes

FichierOPL = v & "\Fichiers Commandes-Fatures ADP.xls"  
     Workbooks.OpenText FichierOPL, xlWindows, 1, xlDelimited, xlTextQualifierDoubleQuote, _  
            False, True, True, False, False, False, FieldInfo:=Array(Array(1, 1), _  
        Array(2, 1)), TrailingMinusNumbers:=True  

Alors, ce serait peut-être parce que le nom du fichier (Fichiers Commandes-Fatures ADP.xls) contient des espaces, ou bien v serait mal défini.
Il faudrait afficher le contenu de FichierOPL, avec une ligne intermédiaire (après FichierOPL... et avant Workbooks...) contenant MessageBox(FichierOPL) (ou MsgBox(FichierOPL), je ne me souviens jamais de la syntaxe, désolé), et voir s'il n'y aurait pas des barres obliques en trop ou manquantes, ou d'autres choses étranges.
 
N.B. S'il vous plait, ne répétez pas mon message dans votre message. C'est inutile, quand mon message est juste au-dessus du votre.

Reply

Marsh Posté le 08-07-2011 à 15:53:42    

Ce que je n'arrive pas à comprendre, c'est que la macro est dans un dossier partagé, si je l'utilise à partir de l'ordi x (l'ordi à partir duquel la macro a été copiée d'une clé USB dans un répertoire partagé), elle fonctionne. Toutefois, si je l'utilise à partir de l'ordi y, elle ne fonctionne plus, pourtant je l'utilise à partir du fichier partagé.
 
 
le programme s'arrête sur SaisieChemin mais si la ligne est trop longue ou mal coupée, la macro ne fonctionnerait pas du tout sur aucuns postes, ce qui n'est pas le cas.
 
Une autre idée?
 
Merci

Reply

Marsh Posté le 08-07-2011 à 16:13:21    

Ok. Voici d'autres idées :

 

1. La variable SaisieChemin n'est pas déclarée. Il faudrait peut-être le faire en ajoutant :

Dim SaisieChemin as String

 

2. Le troisième paramètre n'est peut-être pas correct. Il s'agit de v, qui est sensé contenir la valeur de la cellule A60 (ou BH1 si je me trompe d'ordre). Il faudrait faire un test en remplaçant v par "Toto" dans la ligne du InputBox.

 

3. La doc met en garde sur un problème d'autorisation :

Citation :

La fonction InputBox nécessite UIPermission au niveau SafeTopLevelWindows, ce qui peut affecter son exécution dans les situations où le niveau de confiance n'est pas total. Pour plus d'informations, consultez Demande d'autorisations et UIPermission, classe.

 

(Source : http://msdn.microsoft.com/fr-fr/li [...] .80).aspx)

Il faudrait tester un autre ImputBox() tout simple pour voir si le problème se reproduit.


Message édité par olivthill le 08-07-2011 à 16:13:43
Reply

Marsh Posté le 25-07-2011 à 15:40:16    

Mon problème venait donc du fait que sur le poste sur lequel je souhaite utiliser la macro, il n'y avait pas le fichier "MSWORD.OLB".
Est-ce que quelqu'un peut me dire à quoi sert ce fichier et si je suis obligée de l'utiliser, c'est à dire, est-ce que dans la macro je peux ne pas faire appel à ce fichier et/ou le remplacer par autre chose?
 
Et Si sur un poste utilisateur, il existe déjà un fichier "MSWORD.OLB" mais que la macro ne fonctionne pas, quel risque il y a si je le remplace par le fichier "MSWORD.OLB" que j'ai en ma possession?
 
Merci pour votre aide et vos réponses

Reply

Marsh Posté le 26-07-2011 à 17:14:12    

C'est parce que tu fais référence à la librairie de Word.
Ta macro ou son proprietaire doit utiliser des fonctions/propriétés/méthodes liées à Word.
 
Et l'ordi sur lequel tu es (qui pose souci donc), soit n'a pas la meme version de Word, Soit n'a pas Word etc.
 
 
Edit : Dans VBA Excel, si tu vas dans "Outils" "Références" tu devrais avoir une case à cocher nommée "MANQUANT". Tu décoches si ta macro ne l'utilise pas.
 
Edit2 : Goto LineX...  [:s2000]

Message cité 1 fois
Message édité par SuppotDeSaTante le 26-07-2011 à 17:18:19

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 27-07-2011 à 12:17:35    

Voilà le code du propriétaire, est-ce que je peux changer quelque chose là dedans pour ne plus devoir copier sur tous les postes utilisateurs le fichier MSWORD.OLB ?
 
Merci pour votre aide!
 
[#1cff00]Sub Remplir()
 
Dim shtMacro As Excel.Worksheet
Dim Fichier_OPL As Excel.Worksheet
Dim a, b, C As Integer
Dim d, e, v As String
 
Set shtMacro = ActiveSheet
Cells(60, 1).Select
v = ActiveCell
line30:
SaisieChemin = InputBox("ATTENTION : Vérifier le chemin d'accès souhaité ! Si les fichiers existent déjà, ils seront écrasés !", "Saisir le chemin d'accès pour stocker les fichiers word", v, 5000, 7000)
Cells(60, 1).Select
If SaisieChemin = "" Then GoTo line10
ActiveCell.Formula = SaisieChemin
v = SaisieChemin
t = 0
p = 1
i = 2
Do
t = t + 1
If t = 1 Then GoTo line24
If t = 2 Then GoTo line25
If t = 3 Then GoTo line26
If t = 4 Then GoTo Line2222
If t > 4 Then GoTo Line302
line24:
FichierOPL = v & "\Fichiers Commandes-Fatures ADP.xls"
     Workbooks.OpenText FichierOPL, xlWindows, 1, xlDelimited, xlTextQualifierDoubleQuote, _
            False, True, True, False, False, False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1)), TrailingMinusNumbers:=True
Application.ScreenUpdating = True
Set Fichier_OPL = ActiveSheet
Fichier_OPL.Activate
 
GoTo line20
line25:
Fichier_OPL.Parent.Close False
FichierOPL = v & "\Fichiers Commandes-Factures  Autres.xls"
     Workbooks.OpenText FichierOPL, xlWindows, 1, xlDelimited, xlTextQualifierDoubleQuote, _
            False, True, True, False, False, False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1)), TrailingMinusNumbers:=True
Application.ScreenUpdating = True
Set Fichier_OPL = ActiveSheet
Fichier_OPL.Activate
 
GoTo Line400
line26:
Fichier_OPL.Parent.Close False
FichierOPL = v & "\Fichiers Contrats.xls"
     Workbooks.OpenText FichierOPL, xlWindows, 1, xlDelimited, xlTextQualifierDoubleQuote, _
            False, True, True, False, False, False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1)), TrailingMinusNumbers:=True
Application.ScreenUpdating = True
Set Fichier_OPL = ActiveSheet
Fichier_OPL.Activate
 
GoTo Line400
line20:
saisiennote = InputBox("Entrer le n° de la note à traiter", "Saisir le n° de la note à traiter", , 5000, 7000)
If saisiennote = "" Then GoTo line3
 
GoTo line12
line3:
MsgBox ("Veuillez écrire le numero de note" )
GoTo line20
line10:
MsgBox ("Veuillez entrer un chemin d'accès" )
GoTo line30
'Line100:
'If p = 3 Then GoTo Line106 Else GoTo Line308
'Line106:
'MsgBox ("Le numéro de note n'est pas valide" )
GoTo line300
line12:
Dim WordApp As Word.Application
Dim word_1 As Word.Document
 
Set WordApp = New Word.Application
    WordApp.Visible = False
    WordApp.DisplayAlerts = False
Set word_1 = WordApp.Documents.Open(v & "\modéle validation facture.doc", ReadOnly:=False)
Line400:
Fichier_OPL.Activate
If t = 1 Then Sheets("Cdes ADP" ).Select
If t = 2 Then Sheets("Cdes FT-RC-SOPR-WELC-ASSA-SCI-A" ).Select
If t = 3 Then Sheets("INFO" ).Select
Line2222:
If t = 4 Then Sheets("Contrats" ).Select
Range("A1" ).Select
 
With Range("a1:v1" )
    Set z0 = .Find("Numéro Note", LookIn:=xlValues)
    If z0 Is Nothing Then GoTo Line101
        nnoteColumn = z0.Column
End With
Line101:
With Range("a1:v1" )
    Set z = .Find("FOURNISSEUR", LookIn:=xlValues)
    If z Is Nothing Then GoTo Line303
        fournColumn = z.Column
End With
Line303:
With Range("a1:v1" )
    Set z3 = .Find("Montant*fact.", LookIn:=xlValues)
    If z3 Is Nothing Then GoTo Line306
        PrixColumn = z3.Column
End With
Line306:
With Range("a1:v1" )
    Set z4 = .Find("N°*fact.", LookIn:=xlValues)
    If z4 Is Nothing Then GoTo Line301
        NcommColumn = z4.Column
End With
Line301:
With Range("a1:v1" )
    Set z6 = .Find("TRANSMIS INFO", LookIn:=xlValues)
    If z6 Is Nothing Then GoTo Line304
        TransColumn = z6.Column
End With
Line304:
 
Do
With Columns(nnoteColumn)
    Set z5 = .Find(saisiennote, LookIn:=xlValues)
    If z5 Is Nothing Then GoTo Line308
        nnoterow = z5.Row
End With
If p > 1 Then GoTo line310
    Cells(nnoterow, TransColumn).Select
    Set Trans = ActiveCell
line310:
    Cells(nnoterow, fournColumn).Select
    Set fourn = ActiveCell
 
    Cells(nnoterow, PrixColumn).Select
    Set Prix = ActiveCell
 
    Cells(nnoterow, NcommColumn).Select
    Set Ncomm = ActiveCell
     
    Cells(nnoterow, nnoteColumn).Select
    Selection.ClearContents
     
With WordApp.Selection
word_1.Select
If p > 1 Then GoTo Line311
            With word_1.Tables(1)
              .Cell(1, 2).Range.InsertAfter saisiennote
              .Cell(2, 3).Range.InsertAfter Trans
            End With
            With word_1.Tables(2)
              .Cell(2, 5).Range.InsertAfter Trans
            End With
Line311:
If i > 2 Then GoTo line120 Else GoTo line121
line120:
word_1.Tables(3).Rows.Add
line121:
            With word_1.Tables(3)
              .Cell(i, 1).Range.InsertAfter fourn
              .Cell(i, 2).Range.InsertAfter Ncomm
              .Cell(i, 3).Range.InsertAfter Prix & " €"
            End With
 
End With
p = p + 1
i = i + 1
Loop
 
Line308:
Loop
Line302:
On Error Resume Next
FileSystem.MkDir (v & "\" )
On Error Resume Next
nom_fichier = v & "\" & saisiennote & ".doc"
    word_1.SaveAs Filename:=nom_fichier
    word_1.Close
    WordApp.Quit False
 
line300:
Fichier_OPL.Parent.Close False
Set WordApp = Nothing
shtMacro.Activate
Range("a1:a2" ).Select
 
 
End Sub
[/#00d42a]

Reply

Marsh Posté le 27-07-2011 à 12:34:08    

Non mais au lieu de nous sortir une tartine verte totalement illisible, as tu lu mon message ???
 

SuppotDeSaTante a écrit :

C'est parce que tu fais référence à la librairie de Word.
Dans VBA Excel, si tu vas dans "Outils" "Références" tu devrais avoir une case à cocher nommée "MANQUANT". Tu décoches si ta macro ne l'utilise pas.


De plus, cette ligne

Code :
  1. Set WordApp = New Word.Application

Oblige à faire référence aux bibliotheques Word.
 
Pour eviter les references hasardeuses en fonction des versions mieux vaut passer comme ca :

Code :
  1. Set WordApp = CreateObject("Word.Application" )


 
Maintenant, si Word n'est pas sur le poste, ca va etre dur de faire fonctionner cette macro... Qui ouvre des modeles Word (de facturations entre autre si j'ai reussi a lire, merci aux rayons gamma)
 
 
Et pour info, le code on le met entre balise, au minimum une balise [ cpp] serait appreciable :jap:
 
Edit : dire où ca plante est un minimum...


Message édité par SuppotDeSaTante le 27-07-2011 à 12:41:35

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 27-07-2011 à 12:34:08   

Reply

Marsh Posté le 29-07-2011 à 11:55:25    

Tu n'es pas obligé d'être désagréable.
 
Je ne fais pas de programmation, j'installe uniquement du matériel informatique des logiciels, je fais de l'assistance sur les applications métiers... alors désolée de ne pas tout comprendre ce que tu me dis et de ne faire les choses correctements.
 
Edit : Dans VBA Excel, si tu vas dans "Outils" "Références" tu devrais avoir une case à cocher nommée "MANQUANT". Tu décoches si ta macro ne l'utilise pas. => Je l'ai fait, ça ne fonctionne pas
 
Edit2 : Goto LineX...  [:s2000]  => Je ne vois pas ce que tu veux dire!
 
Word est installé sur les postes, toutefois, le MSWORD.OLB y était aussi mais la macro ne fonctionnait pas, j'ai donc repris le MSWORD.OLB qui était sur le poste sur lequel la macro fonctionnait pour le réinstaller sur l'autre poste utilisateur, qu'elle en est la conséquence!!!? Ce qui me dérrange, c'est que j'ai l'autorisation d'installer la macro mais pas forcément d'aller modifier le MSWORD.OLB! C'est pour cela que je voulais savoir si je pouvais modifier le code (sachant que je ne suis pas experte du tout) pour ne pas à avoir à utiliser ce MSWORD.OLB, si ce n'est pas possible, ok je peux comprendre!

Reply

Marsh Posté le 29-07-2011 à 12:12:43    

Alice41 a écrit :

Tu n'es pas obligé d'être désagréable.

Quand on vient demander de l'aide, le minimum c'est de mettre quelque chose de lisible et surtout de donner un minimum d'information. Si tu ne sais pas faire, demande. Je n'ai aucun souci a expliquer, voir expliquer 1000 fois. Aucun problème.
Mais balancer une tartine verte comme ca, sans avoir lu ni meme repondu a ma question, pour moi c'est toi qui devient désagréable.
 

Alice41 a écrit :

Je ne fais pas de programmation, j'installe uniquement du matériel informatique des logiciels, je fais de l'assistance sur les applications métiers... alors désolée de ne pas tout comprendre ce que tu me dis et de ne faire les choses correctements.

Je ne critique pas du tout ta méconnaissance, seulement le fait de te poser des questions et que tu ne répondes pas, ou que tu répondes en mettant une tartine verte illisible sans rien n'expliquer du process.
 

Alice41 a écrit :

Edit : Dans VBA Excel, si tu vas dans "Outils" "Références" tu devrais avoir une case à cocher nommée "MANQUANT". Tu décoches si ta macro ne l'utilise pas. => Je l'ai fait, ça ne fonctionne pas

Idem. Que veut dire "ca ne fonctionne pas".
Si tu l'as fait, ca veut bien dire qu'il y avait une reference aux bibliotheques de Word, et qu'elle etait marquée "Manquante" non ?
Donc, si la bibliotheque n'existe pas, ou que le fichier est ailleurs, ou que le fichier est d'une autre version, le mieux c'est d'éviter de passer par une reference.
Et là, encore une fois, je te propose une solution ici, qui évite de passer par des références :

Code :
  1. Set WordApp = CreateObject("Word.Application" )


Mais pas de réponse. Ca marche, ca marche pas, je ne sais pas. Par contre j'ai droit à un super laïus...
 

Alice41 a écrit :

Edit2 : Goto LineX...  [:s2000]  => Je ne vois pas ce que tu veux dire!


Je ne dirais rien, je risquerais d'être désagréable.
 

Alice41 a écrit :

Word est installé sur les postes, toutefois, le MSWORD.OLB y était aussi mais la macro ne fonctionnait pas, j'ai donc repris le MSWORD.OLB qui était sur le poste sur lequel la macro fonctionnait pour le réinstaller sur l'autre poste utilisateur, qu'elle en est la conséquence!!!? Ce qui me dérrange, c'est que j'ai l'autorisation d'installer la macro mais pas forcément d'aller modifier le MSWORD.OLB! C'est pour cela que je voulais savoir si je pouvais modifier le code (sachant que je ne suis pas experte du tout) pour ne pas à avoir à utiliser ce MSWORD.OLB, si ce n'est pas possible, ok je peux comprendre!


Une macro qui ne fonctionne pas, ca ne veut rien dire. Tu installes des machines, ou des logiciels, si un client te dit "allo, ca ne marche pas", tu vas lui demander s'il a un message d'erreur, quel est il, quel est le déroulement jusqu'a ce que ca ne marche pas etc.
Donc, vu que je suis obligé de le demander, qu'est-ce qui ne marche pas. A quel endroit la macro plante ?
 
Tu installes une macro ? C'est a dire...? C'est une macro complémentaire ? A mettre dans le "classeur de macro personnel" ?
 
Pour le reste j'ai répondu juste au dessus.
 
 
Tu ne donnes aucune info.

  • Où est la macro ?
  • Quel type de macro ? Dans le fichier ? Complémentaire ? Perso.xls(x) ?
  • Sur le poste destinataire, que fais tu ? Tu lances Excel, et execute une macro qui est dans le classeur ?
  • Quelle version d'Excel ? Si c'est un <2007 ou >2003 ca change pas mal de chose
  • Quel est le parcours du fichier Excel ou de la macro ?
  • etc.


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 28-01-2012 à 13:52:49    

Bonjour
je sais que cette discussion est ancienne mais c'est en faisant des recherches que je suis tombée dessus.
 
J'ai un problème..
je fais un projet sur excel 2007 sous VBA mes macros marche quand je clique dessus etc sur mon ordinateur
En changeant d'ordinateur j'ouvre le fichier et quand je clique sur les macro je reçois un message d'erreur : "impossible d'afficher l'objet car il est indisponible sur cette machine" en cliquant sur ok ça m'ouvre le VBA en me disant "erreur de compilation ; projet ou bibliothèque introuvable"
j'ai essayé d'aller dans "outils" "référence" mais je ne peut pas cliquer dessus.
 
En revanche sur l'ordinateur où mes macros marchent je peux aller sur "références" et j'ai plusieurs lignes coché mais je ne trouve pas "MANQUANT".
de plus le message que je retrouve sur l'autre ordinateur "impossible d'afficher l'objet car il est indisponible sur cette machine" vient de "Microsoft forms" (qui est coché dans reference mais je n'arrive pas à le décocher)
 
ça a été dur de me faire comprendre. j'espère que c'est assez clair pour que vous puissiez m'aider.
 
Merci d'avance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed