OVH Cloud OVH Cloud

Pb d'appel à une dll

4 réponses
Avatar
Nico M&S
Bonjour,

Je souhaite créer un appel à une dll dans une macro VBA de Excel,
Lecfin.dll, mais j'obtiens le message d'erreur '53' : fichier introuvable.

Pourtant, j'ai vérifié les chemins d'accès et l'exitence des fichiers, tout
est correct. Le même code avec les mêmes noms de fichiers et de répertoires
fonctionne sur mon portable et pas sur le pc fixe ! La version d'Excel est la
même, mais pas celle de WinXP.

Pouvez-vous m'aider ? Merci d'avance.

Voici le code qui pose problème :

Private Declare Sub lfGetDe3Info Lib "F:\ComBri\Parametric\Lecfin.dll" _
(ByVal strde3 As String, ByVal ilen As Long, ByRef max_de3_step As
Long, _
ByRef lib As Long, ByRef nodmax As Long)

Sub Extract_displ()

Dim filedat As String
Dim filede3 As String
Dim max_de3_step As Long 'number of steps in .de3 file
Dim lib As Long 'number of DOF
Dim nodmax As Long 'highest node number (holes are allowed)

filedat = "F:\ComBri\" + CStr(ActiveCell.Value) + ".dat"
filede3 = Left(filedat, Len(filedat) - 4) & ".de3"

Call lfGetDe3Info(filede3, Len(filede3), max_de3_step, lib, nodmax)

4 réponses

Avatar
Guy DETIENNE
Salut ;O)

De mémoire, je n'ai jamais vu que l'on mettait le chemin de la DLL dans sa
déclaration.
Place ta DLL dans C:WindowsSystem32 et cela devrait rentrer dans l'ordre.
En VB6, l'on peut placer la DLL dans le chemin de l'exécutable, je ne sais
ce qu'il en est avec Excel.

Et retire le chemin de la DLL :

Private Declare Sub lfGetDe3Info Lib "Lecfin.dll" (ByVal strde3 As String,
ByVal ilen As Long, ByRef max_de3_step As Long, ByRef lib As Long, ByRef
nodmax As Long)

Guy



"Nico M&S" <Nico M& a écrit dans le message de
news:
Bonjour,

Je souhaite créer un appel à une dll dans une macro VBA de Excel,
Lecfin.dll, mais j'obtiens le message d'erreur '53' : fichier introuvable.

Pourtant, j'ai vérifié les chemins d'accès et l'exitence des fichiers,


tout
est correct. Le même code avec les mêmes noms de fichiers et de


répertoires
fonctionne sur mon portable et pas sur le pc fixe ! La version d'Excel est


la
même, mais pas celle de WinXP.

Pouvez-vous m'aider ? Merci d'avance.

Voici le code qui pose problème :

Private Declare Sub lfGetDe3Info Lib "F:ComBriParametricLecfin.dll" _
(ByVal strde3 As String, ByVal ilen As Long, ByRef max_de3_step As
Long, _
ByRef lib As Long, ByRef nodmax As Long)

Sub Extract_displ()

Dim filedat As String
Dim filede3 As String
Dim max_de3_step As Long 'number of steps in .de3 file
Dim lib As Long 'number of DOF
Dim nodmax As Long 'highest node number (holes are allowed)

filedat = "F:ComBri" + CStr(ActiveCell.Value) + ".dat"
filede3 = Left(filedat, Len(filedat) - 4) & ".de3"

Call lfGetDe3Info(filede3, Len(filede3), max_de3_step, lib, nodmax)



Avatar
Alain CROS
Bonjour,

J'ai ça dans ma doc.

Specifying the Library
The Lib clause in the Declare statement tells Visual Basic where to find the .dll file that contains the procedure. When you're
referencing one of the core Windows libraries (User32, Kernel32, or GDI32), you don't need to include the file name extension:
Declare Function GetTickCount Lib "kernel32" Alias _
"GetTickCount" () As Long

For other DLLs, the Lib clause is a file specification that can include a path:
Declare Function lzCopy Lib "c:windowslzexpand.dll" _
(ByVal S As Integer, ByVal D As Integer) As Long

If you do not specify a path for libname, Visual Basic will search for the file in the following order:
1. Directory containing the .exe file
2. Current directory
3. Windows system directory (often but not necessarily WindowsSystem)
4. Windows directory (not necessarily Windows)
5. Path environment variable

Alain CROS

"Guy DETIENNE" a écrit dans le message de news:
| Salut ;O)
|
| De mémoire, je n'ai jamais vu que l'on mettait le chemin de la DLL dans sa
| déclaration.
| Place ta DLL dans C:WindowsSystem32 et cela devrait rentrer dans l'ordre.
| En VB6, l'on peut placer la DLL dans le chemin de l'exécutable, je ne sais
| ce qu'il en est avec Excel.
|
| Et retire le chemin de la DLL :
|
| Private Declare Sub lfGetDe3Info Lib "Lecfin.dll" (ByVal strde3 As String,
| ByVal ilen As Long, ByRef max_de3_step As Long, ByRef lib As Long, ByRef
| nodmax As Long)
|
| Guy
|
|
|
| "Nico M&S" <Nico M& a écrit dans le message de
| news:
| > Bonjour,
| >
| > Je souhaite créer un appel à une dll dans une macro VBA de Excel,
| > Lecfin.dll, mais j'obtiens le message d'erreur '53' : fichier introuvable.
| >
| > Pourtant, j'ai vérifié les chemins d'accès et l'exitence des fichiers,
| tout
| > est correct. Le même code avec les mêmes noms de fichiers et de
| répertoires
| > fonctionne sur mon portable et pas sur le pc fixe ! La version d'Excel est
| la
| > même, mais pas celle de WinXP.
| >
| > Pouvez-vous m'aider ? Merci d'avance.
| >
| > Voici le code qui pose problème :
| >
| > Private Declare Sub lfGetDe3Info Lib "F:ComBriParametricLecfin.dll" _
| > (ByVal strde3 As String, ByVal ilen As Long, ByRef max_de3_step As
| > Long, _
| > ByRef lib As Long, ByRef nodmax As Long)
| >
| > Sub Extract_displ()
| >
| > Dim filedat As String
| > Dim filede3 As String
| > Dim max_de3_step As Long 'number of steps in .de3 file
| > Dim lib As Long 'number of DOF
| > Dim nodmax As Long 'highest node number (holes are allowed)
| >
| > filedat = "F:ComBri" + CStr(ActiveCell.Value) + ".dat"
| > filede3 = Left(filedat, Len(filedat) - 4) & ".de3"
| >
| > Call lfGetDe3Info(filede3, Len(filede3), max_de3_step, lib, nodmax)
| >
|
|
Avatar
Guy DETIENNE
Salut ;O)

Merci pour cette info.
Mais selon moi, il n'est pas recommandé de déclarer une DLL dans un chemin
qui risque de ne pas exister sur une autre machine (si l'application est
destinée à être utilisée sur différentes machines).


Guy

"Alain CROS" a écrit dans le message de
news:
Bonjour,

J'ai ça dans ma doc.

Specifying the Library
The Lib clause in the Declare statement tells Visual Basic where to find


the .dll file that contains the procedure. When you're
referencing one of the core Windows libraries (User32, Kernel32, or


GDI32), you don't need to include the file name extension:
Declare Function GetTickCount Lib "kernel32" Alias _
"GetTickCount" () As Long

For other DLLs, the Lib clause is a file specification that can include a


path:
Declare Function lzCopy Lib "c:windowslzexpand.dll" _
(ByVal S As Integer, ByVal D As Integer) As Long

If you do not specify a path for libname, Visual Basic will search for the


file in the following order:
1. Directory containing the .exe file
2. Current directory
3. Windows system directory (often but not necessarily WindowsSystem)
4. Windows directory (not necessarily Windows)
5. Path environment variable

Alain CROS

"Guy DETIENNE" a écrit dans le message de news:



| Salut ;O)
|
| De mémoire, je n'ai jamais vu que l'on mettait le chemin de la DLL dans


sa
| déclaration.
| Place ta DLL dans C:WindowsSystem32 et cela devrait rentrer dans


l'ordre.
| En VB6, l'on peut placer la DLL dans le chemin de l'exécutable, je ne


sais
| ce qu'il en est avec Excel.
|
| Et retire le chemin de la DLL :
|
| Private Declare Sub lfGetDe3Info Lib "Lecfin.dll" (ByVal strde3 As


String,
| ByVal ilen As Long, ByRef max_de3_step As Long, ByRef lib As Long, ByRef
| nodmax As Long)
|
| Guy
|
|
|
| "Nico M&S" <Nico M& a écrit dans le message


de
| news:
| > Bonjour,
| >
| > Je souhaite créer un appel à une dll dans une macro VBA de Excel,
| > Lecfin.dll, mais j'obtiens le message d'erreur '53' : fichier


introuvable.
| >
| > Pourtant, j'ai vérifié les chemins d'accès et l'exitence des fichiers,
| tout
| > est correct. Le même code avec les mêmes noms de fichiers et de
| répertoires
| > fonctionne sur mon portable et pas sur le pc fixe ! La version d'Excel


est
| la
| > même, mais pas celle de WinXP.
| >
| > Pouvez-vous m'aider ? Merci d'avance.
| >
| > Voici le code qui pose problème :
| >
| > Private Declare Sub lfGetDe3Info Lib "F:ComBriParametricLecfin.dll"


_
| > (ByVal strde3 As String, ByVal ilen As Long, ByRef


max_de3_step As
| > Long, _
| > ByRef lib As Long, ByRef nodmax As Long)
| >
| > Sub Extract_displ()
| >
| > Dim filedat As String
| > Dim filede3 As String
| > Dim max_de3_step As Long 'number of steps in .de3 file
| > Dim lib As Long 'number of DOF
| > Dim nodmax As Long 'highest node number (holes are allowed)
| >
| > filedat = "F:ComBri" + CStr(ActiveCell.Value) + ".dat"
| > filede3 = Left(filedat, Len(filedat) - 4) & ".de3"
| >
| > Call lfGetDe3Info(filede3, Len(filede3), max_de3_step, lib, nodmax)
| >
|
|




Avatar
Renfield
c'est faisable, de déclarer tout le chemin, mais pas conseillé (je
hais les chemins en dur)

si c'est la dll qui va avec ton soft, le plus simple, c'est de la
placer dans le même repertoire....