Erreur de compilation, Projet ou bibliothèque introuvables - VB/VBA/VBS - Programmation
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...
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 ? |
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 le problème concernerait les deux lignes
FichierOPL = v & "\Fichiers Commandes-Fatures ADP.xls" |
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.
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
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.
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
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...
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]
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. |
De plus, cette ligne
Code :
|
Oblige à faire référence aux bibliotheques Word.
Pour eviter les references hasardeuses en fonction des versions mieux vaut passer comme ca :
Code :
|
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
Edit : dire où ca plante est un minimum...
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!
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 :
|
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.
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
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