Je suis en train de développer un logiciel qui, en plus du programme
lui-même, fournit une DLL et une feuille de calcul Excel utilisant la
DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le
dossier par défaut pour les programmes. C'est là que commencent les
problèmes. Ce dossier est variable, typiquement:
sous Win32 : c:\Program Files
sous Winx64: c:\Program Files (x86)
ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:\Program Files\MonLogiciel\MaLib.dll"
(ByVal Nom_Fichier As String, SizeNom As Long) As Long
Sub CheminRepertoiresSpeciaux() 'Testé sur WinXp Const Cible = &H26 Dim objShell As Object Dim objFolder As Object, objFolderItem As Object Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(Cible) Set objFolderItem = objFolder.Self MsgBox objFolderItem.Path End Sub
isabelle
Le 2010-02-21 10:21, Eric S a écrit :
Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme lui-même, fournit une DLL et une feuille de calcul Excel utilisant la DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le dossier par défaut pour les programmes. C'est là que commencent les problèmes. Ce dossier est variable, typiquement: sous Win32 : c:Program Files sous Winx64: c:Program Files (x86) ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Des pistes?
Éric
bonjour Éric,
peut tu tester cette macro avec Winx64 ?
Sub CheminRepertoiresSpeciaux()
'Testé sur WinXp
Const Cible = &H26
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(Cible)
Set objFolderItem = objFolder.Self
MsgBox objFolderItem.Path
End Sub
isabelle
Le 2010-02-21 10:21, Eric S a écrit :
Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme
lui-même, fournit une DLL et une feuille de calcul Excel utilisant la
DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le
dossier par défaut pour les programmes. C'est là que commencent les
problèmes. Ce dossier est variable, typiquement:
sous Win32 : c:Program Files
sous Winx64: c:Program Files (x86)
ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect
variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program
FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As
Long) As Long
Sub CheminRepertoiresSpeciaux() 'Testé sur WinXp Const Cible = &H26 Dim objShell As Object Dim objFolder As Object, objFolderItem As Object Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(Cible) Set objFolderItem = objFolder.Self MsgBox objFolderItem.Path End Sub
isabelle
Le 2010-02-21 10:21, Eric S a écrit :
Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme lui-même, fournit une DLL et une feuille de calcul Excel utilisant la DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le dossier par défaut pour les programmes. C'est là que commencent les problèmes. Ce dossier est variable, typiquement: sous Win32 : c:Program Files sous Winx64: c:Program Files (x86) ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Des pistes?
Éric
Hervé
Bonjour,
Et en interrogeant le chemin de ton programme tu doit pouvoir récupérer le chemin de ta DLL si elle est installée dans le même dossier non ? en VB6 : DossierDLL=App.Path & "" En VB.Net : DossierDLL=My.Application.Info.DirectoryPath & ""
Hervé.
"Eric S" a écrit dans le message de news:4b814f6e$0$12192$
Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme lui-même, fournit une DLL et une feuille de calcul Excel utilisant la DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le dossier par défaut pour les programmes. C'est là que commencent les problèmes. Ce dossier est variable, typiquement: sous Win32 : c:Program Files sous Winx64: c:Program Files (x86) ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Des pistes?
Éric
Bonjour,
Et en interrogeant le chemin de ton programme tu doit pouvoir récupérer le
chemin de ta DLL si elle est installée dans le même dossier non ?
en VB6 :
DossierDLL=App.Path & ""
En VB.Net :
DossierDLL=My.Application.Info.DirectoryPath & ""
Hervé.
"Eric S" <ericno@sibspamert.fr> a écrit dans le message de
news:4b814f6e$0$12192$426a74cc@news.free.fr...
Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme
lui-même, fournit une DLL et une feuille de calcul Excel utilisant la DLL.
L'ensemble est installé sur l'ordinateur de l'utilisateur dans le dossier
par défaut pour les programmes. C'est là que commencent les problèmes. Ce
dossier est variable, typiquement:
sous Win32 : c:Program Files
sous Winx64: c:Program Files (x86)
ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll"
(ByVal Nom_Fichier As String, SizeNom As Long) As Long
Et en interrogeant le chemin de ton programme tu doit pouvoir récupérer le chemin de ta DLL si elle est installée dans le même dossier non ? en VB6 : DossierDLL=App.Path & "" En VB.Net : DossierDLL=My.Application.Info.DirectoryPath & ""
Hervé.
"Eric S" a écrit dans le message de news:4b814f6e$0$12192$
Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme lui-même, fournit une DLL et une feuille de calcul Excel utilisant la DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le dossier par défaut pour les programmes. C'est là que commencent les problèmes. Ce dossier est variable, typiquement: sous Win32 : c:Program Files sous Winx64: c:Program Files (x86) ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Je parle d'appeler la DLL depuis une macro excel, pas depuis mon programme. Et si par défaut, la feuille excel se trouve dans le même dossier que la DLL, ensuite l'utilisateur peut faire des copies de la feuille excel dans d'autres dossiers mais il faut quand même retrouver la DLL qui elle ne bouge pas.
Eric
Je parle d'appeler la DLL depuis une macro excel, pas depuis mon
programme. Et si par défaut, la feuille excel se trouve dans le même
dossier que la DLL, ensuite l'utilisateur peut faire des copies de la
feuille excel dans d'autres dossiers mais il faut quand même retrouver
la DLL qui elle ne bouge pas.
Je parle d'appeler la DLL depuis une macro excel, pas depuis mon programme. Et si par défaut, la feuille excel se trouve dans le même dossier que la DLL, ensuite l'utilisateur peut faire des copies de la feuille excel dans d'autres dossiers mais il faut quand même retrouver la DLL qui elle ne bouge pas.
Eric
michdenis
Bonjour,
Habituellement, les fichiers "DLL" se retrouvent dans un de ces répertoires selon le système d'exploitation utilisé
C:WindowsSystem32 Sous des versions de Windows plus anciennes : c:WindowsSystem
Pour retrouver ta Dll, tu peux utiliser ceci si tu as placé ta DLL dans le bon répertoire :
'Haut module standard : Déclaration de l'API Private Declare Function GetSystemDirectory& Lib "kernel32" Alias _ "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
'------------------------------- Sub Test() Dim MaDll As String Trouver_Dll "MonFichier.Dll" End Sub '------------------------------- Sub Trouver_Dll(MaDll As String) Dim sPath As String, tPath As String tPath = Space(255) tPath = Left(tPath, GetSystemDirectory(tPath, 255)) & "" & MaDll MsgBox tPath End Sub '-------------------------------
Pour ce qui suit, suppose que tu veuilles installer une Dll sur un nouvel ordinateur. En supposant qu'elle est dans le même répertoire que le fichier qui exécute cette macro, voici une façon de copier cette Dll dans le bon répertoire et de l'initialiser dans la base de registre de Windows
'Déclaration de l'Api dans le haut du module Private Declare Function GetSystemDirectory& Lib "kernel32" Alias _ "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) '---------------------------------------------- Sub OcxReg(OcxName As String) Dim sPath As String, tPath As String sPath = ThisWorkbook.Path & "" & OcxName If Dir(sPath) = "" Then MsgBox "File " & sPath & " no found !", 48 Exit Sub End If tPath = Space(255) tPath = Left(tPath, GetSystemDirectory(tPath, 255)) & "" If Dir(tPath & OcxName) = "" Then FileCopy sPath, tPath & OcxName Shell tPath & "regsvr32.exe " & OcxName & " /s" End If End Sub '----------------------------------------------
ET pour l'appel de la procédure précédente : '------------------------------------------------ Sub Test() OcxReg "NomDeMaDll.Dll" End Sub '------------------------------------------------
"Eric S" a écrit dans le message de groupe de discussion : 4b814f6e$0$12192$ Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme lui-même, fournit une DLL et une feuille de calcul Excel utilisant la DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le dossier par défaut pour les programmes. C'est là que commencent les problèmes. Ce dossier est variable, typiquement: sous Win32 : c:Program Files sous Winx64: c:Program Files (x86) ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Des pistes?
Éric
Bonjour,
Habituellement, les fichiers "DLL" se retrouvent dans un de
ces répertoires selon le système d'exploitation utilisé
C:WindowsSystem32
Sous des versions de Windows plus anciennes :
c:WindowsSystem
Pour retrouver ta Dll, tu peux utiliser ceci si tu as placé ta DLL
dans le bon répertoire :
'Haut module standard : Déclaration de l'API
Private Declare Function GetSystemDirectory& Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
'-------------------------------
Sub Test()
Dim MaDll As String
Trouver_Dll "MonFichier.Dll"
End Sub
'-------------------------------
Sub Trouver_Dll(MaDll As String)
Dim sPath As String, tPath As String
tPath = Space(255)
tPath = Left(tPath, GetSystemDirectory(tPath, 255)) & "" & MaDll
MsgBox tPath
End Sub
'-------------------------------
Pour ce qui suit, suppose que tu veuilles installer une Dll sur un
nouvel ordinateur. En supposant qu'elle est dans le même
répertoire que le fichier qui exécute cette macro, voici une façon
de copier cette Dll dans le bon répertoire et de l'initialiser dans
la base de registre de Windows
'Déclaration de l'Api dans le haut du module
Private Declare Function GetSystemDirectory& Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
'----------------------------------------------
Sub OcxReg(OcxName As String)
Dim sPath As String, tPath As String
sPath = ThisWorkbook.Path & "" & OcxName
If Dir(sPath) = "" Then
MsgBox "File " & sPath & " no found !", 48
Exit Sub
End If
tPath = Space(255)
tPath = Left(tPath, GetSystemDirectory(tPath, 255)) & ""
If Dir(tPath & OcxName) = "" Then
FileCopy sPath, tPath & OcxName
Shell tPath & "regsvr32.exe " & OcxName & " /s"
End If
End Sub
'----------------------------------------------
ET pour l'appel de la procédure précédente :
'------------------------------------------------
Sub Test()
OcxReg "NomDeMaDll.Dll"
End Sub
'------------------------------------------------
"Eric S" <ericno@sibspamert.fr> a écrit dans le message de groupe de discussion :
4b814f6e$0$12192$426a74cc@news.free.fr...
Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme
lui-même, fournit une DLL et une feuille de calcul Excel utilisant la
DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le
dossier par défaut pour les programmes. C'est là que commencent les
problèmes. Ce dossier est variable, typiquement:
sous Win32 : c:Program Files
sous Winx64: c:Program Files (x86)
ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll"
(ByVal Nom_Fichier As String, SizeNom As Long) As Long
Habituellement, les fichiers "DLL" se retrouvent dans un de ces répertoires selon le système d'exploitation utilisé
C:WindowsSystem32 Sous des versions de Windows plus anciennes : c:WindowsSystem
Pour retrouver ta Dll, tu peux utiliser ceci si tu as placé ta DLL dans le bon répertoire :
'Haut module standard : Déclaration de l'API Private Declare Function GetSystemDirectory& Lib "kernel32" Alias _ "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
'------------------------------- Sub Test() Dim MaDll As String Trouver_Dll "MonFichier.Dll" End Sub '------------------------------- Sub Trouver_Dll(MaDll As String) Dim sPath As String, tPath As String tPath = Space(255) tPath = Left(tPath, GetSystemDirectory(tPath, 255)) & "" & MaDll MsgBox tPath End Sub '-------------------------------
Pour ce qui suit, suppose que tu veuilles installer une Dll sur un nouvel ordinateur. En supposant qu'elle est dans le même répertoire que le fichier qui exécute cette macro, voici une façon de copier cette Dll dans le bon répertoire et de l'initialiser dans la base de registre de Windows
'Déclaration de l'Api dans le haut du module Private Declare Function GetSystemDirectory& Lib "kernel32" Alias _ "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) '---------------------------------------------- Sub OcxReg(OcxName As String) Dim sPath As String, tPath As String sPath = ThisWorkbook.Path & "" & OcxName If Dir(sPath) = "" Then MsgBox "File " & sPath & " no found !", 48 Exit Sub End If tPath = Space(255) tPath = Left(tPath, GetSystemDirectory(tPath, 255)) & "" If Dir(tPath & OcxName) = "" Then FileCopy sPath, tPath & OcxName Shell tPath & "regsvr32.exe " & OcxName & " /s" End If End Sub '----------------------------------------------
ET pour l'appel de la procédure précédente : '------------------------------------------------ Sub Test() OcxReg "NomDeMaDll.Dll" End Sub '------------------------------------------------
"Eric S" a écrit dans le message de groupe de discussion : 4b814f6e$0$12192$ Bonjour,
Je suis en train de développer un logiciel qui, en plus du programme lui-même, fournit une DLL et une feuille de calcul Excel utilisant la DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le dossier par défaut pour les programmes. C'est là que commencent les problèmes. Ce dossier est variable, typiquement: sous Win32 : c:Program Files sous Winx64: c:Program Files (x86) ou tout autre si les paramètres de windows ont été changés.
Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?
Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Des pistes?
Éric
Eric S
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un activeX ou un objet COM+++?
Eric
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un
activeX ou un objet COM+++?
c'est bon, pour winxp Résultat: C:Program Files isabelle
Eric S
En fait la question que m'inspire ton message est: - si le programme d'installation enregistre la DLL, est-ce que Excel/VBA est capable de la retrouver tout seul?
Le 21/02/2010 19:48, Eric S a écrit :
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un activeX ou un objet COM+++?
Eric
En fait la question que m'inspire ton message est:
- si le programme d'installation enregistre la DLL, est-ce que Excel/VBA
est capable de la retrouver tout seul?
Le 21/02/2010 19:48, Eric S a écrit :
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un
activeX ou un objet COM+++?
En fait la question que m'inspire ton message est: - si le programme d'installation enregistre la DLL, est-ce que Excel/VBA est capable de la retrouver tout seul?
Le 21/02/2010 19:48, Eric S a écrit :
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un activeX ou un objet COM+++?
Eric
Eric S
Certes, mais comment je fais pour intégrer sans l'appel aux fonctions de la DLL, sachant que la déclaration se fait avant le début du code exécutable?
J'imagine qu'il y a une méthode pour charger dynamiquement la DLL alors qu'actuellement, je suis plutôt en statique:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Sub Ouvrir()
Dim Resultat As String
Resultat = "donnees.txt" If LitFichier(Resultat, Len(Resultat)) <> 0 Then MsgBox "Impossible de charger le fichier donnees.txt"
Eric
Le 21/02/2010 19:49, isabelle a écrit :
Le 2010-02-21 12:37, Eric S a écrit :
Résultat: C:Program Files (x86)
c'est bon, pour winxp Résultat: C:Program Files isabelle
Certes, mais comment je fais pour intégrer sans l'appel aux fonctions de
la DLL, sachant que la déclaration se fait avant le début du code
exécutable?
J'imagine qu'il y a une méthode pour charger dynamiquement la DLL alors
qu'actuellement, je suis plutôt en statique:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll"
(ByVal Nom_Fichier As String, SizeNom As Long) As Long
Sub Ouvrir()
Dim Resultat As String
Resultat = "donnees.txt"
If LitFichier(Resultat, Len(Resultat)) <> 0 Then
MsgBox "Impossible de charger le fichier donnees.txt"
Eric
Le 21/02/2010 19:49, isabelle a écrit :
Le 2010-02-21 12:37, Eric S a écrit :
Résultat: C:Program Files (x86)
c'est bon,
pour winxp
Résultat: C:Program Files
isabelle
Certes, mais comment je fais pour intégrer sans l'appel aux fonctions de la DLL, sachant que la déclaration se fait avant le début du code exécutable?
J'imagine qu'il y a une méthode pour charger dynamiquement la DLL alors qu'actuellement, je suis plutôt en statique:
Declare Function LitFichier Lib "c:Program FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As Long) As Long
Sub Ouvrir()
Dim Resultat As String
Resultat = "donnees.txt" If LitFichier(Resultat, Len(Resultat)) <> 0 Then MsgBox "Impossible de charger le fichier donnees.txt"
Eric
Le 21/02/2010 19:49, isabelle a écrit :
Le 2010-02-21 12:37, Eric S a écrit :
Résultat: C:Program Files (x86)
c'est bon, pour winxp Résultat: C:Program Files isabelle
michdenis
"Excel 2003 VBA Programmer's Reference" Paul Kimmel, Stephen Bullen John Green, Rob Bovey, Robert Rosenberg
Dans leur bouquin, les auteurs réservent un chapitre complet (chapitre 13) sur le sujet. Je ne vais pas t'en faire un résumé. Il y a plus d'une façon de faire dont celle-ci : à partir de la fenêtre de l'éditeur de code, barre des menus / référence / tu utilises le bouton parcourir et dans l'arborescence des fichiers de l'explorateur Windows, tu retrouves la location de ton fichier Dll et tu l'ajoutes comme référence. Dans l'explorateur d'objets (F2), tu devrais retrouver toutes les fonctions (sub) définies dans ta Dll. Tu peux appeler ces fonctions directement dans ton code.
Par automation, ça pourrait donner ceci : MyAddin : Nom de la DLL Simple : Nom de la classe '------------------------------ Sub InstallAutomationAddin() AddIns.Add Filename:="MyAddin.Simple" AddIns("MyAddin.Simple").Installed = True End Sub '------------------------------ C'est comme si tu ajoutais un fichier de macro complémentaire ! Ce qui précède te permet d'appeler tes fonctions directement dans la feuille de calcul.
L'idéal serait que tu puisses accéder au bouquin et lire toutes les explications sur le sujet. Perso. J'ai déjà tenté le coup pour le plaisir, mais je n'ai pas beaucoup d'expérience à ce niveau.
"Eric S" a écrit dans le message de groupe de discussion : 4b8185aa$0$15434$ En fait la question que m'inspire ton message est: - si le programme d'installation enregistre la DLL, est-ce que Excel/VBA est capable de la retrouver tout seul?
Le 21/02/2010 19:48, Eric S a écrit :
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un activeX ou un objet COM+++?
Eric
"Excel 2003 VBA Programmer's Reference"
Paul Kimmel, Stephen Bullen
John Green, Rob Bovey, Robert Rosenberg
Dans leur bouquin, les auteurs réservent un chapitre
complet (chapitre 13) sur le sujet. Je ne vais pas t'en
faire un résumé. Il y a plus d'une façon de faire dont
celle-ci :
à partir de la fenêtre de l'éditeur de code, barre des menus /
référence / tu utilises le bouton parcourir et dans l'arborescence
des fichiers de l'explorateur Windows, tu retrouves la location
de ton fichier Dll et tu l'ajoutes comme référence. Dans l'explorateur
d'objets (F2), tu devrais retrouver toutes les fonctions (sub) définies
dans ta Dll. Tu peux appeler ces fonctions directement dans ton code.
Par automation, ça pourrait donner ceci :
MyAddin : Nom de la DLL
Simple : Nom de la classe
'------------------------------
Sub InstallAutomationAddin()
AddIns.Add Filename:="MyAddin.Simple"
AddIns("MyAddin.Simple").Installed = True
End Sub
'------------------------------
C'est comme si tu ajoutais un fichier de macro complémentaire !
Ce qui précède te permet d'appeler tes fonctions directement
dans la feuille de calcul.
L'idéal serait que tu puisses accéder au bouquin et lire toutes les
explications sur le sujet. Perso. J'ai déjà tenté le coup pour le
plaisir, mais je n'ai pas beaucoup d'expérience à ce niveau.
"Eric S" <ericno@sibspamert.fr> a écrit dans le message de groupe de discussion :
4b8185aa$0$15434$426a74cc@news.free.fr...
En fait la question que m'inspire ton message est:
- si le programme d'installation enregistre la DLL, est-ce que Excel/VBA
est capable de la retrouver tout seul?
Le 21/02/2010 19:48, Eric S a écrit :
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un
activeX ou un objet COM+++?
"Excel 2003 VBA Programmer's Reference" Paul Kimmel, Stephen Bullen John Green, Rob Bovey, Robert Rosenberg
Dans leur bouquin, les auteurs réservent un chapitre complet (chapitre 13) sur le sujet. Je ne vais pas t'en faire un résumé. Il y a plus d'une façon de faire dont celle-ci : à partir de la fenêtre de l'éditeur de code, barre des menus / référence / tu utilises le bouton parcourir et dans l'arborescence des fichiers de l'explorateur Windows, tu retrouves la location de ton fichier Dll et tu l'ajoutes comme référence. Dans l'explorateur d'objets (F2), tu devrais retrouver toutes les fonctions (sub) définies dans ta Dll. Tu peux appeler ces fonctions directement dans ton code.
Par automation, ça pourrait donner ceci : MyAddin : Nom de la DLL Simple : Nom de la classe '------------------------------ Sub InstallAutomationAddin() AddIns.Add Filename:="MyAddin.Simple" AddIns("MyAddin.Simple").Installed = True End Sub '------------------------------ C'est comme si tu ajoutais un fichier de macro complémentaire ! Ce qui précède te permet d'appeler tes fonctions directement dans la feuille de calcul.
L'idéal serait que tu puisses accéder au bouquin et lire toutes les explications sur le sujet. Perso. J'ai déjà tenté le coup pour le plaisir, mais je n'ai pas beaucoup d'expérience à ce niveau.
"Eric S" a écrit dans le message de groupe de discussion : 4b8185aa$0$15434$ En fait la question que m'inspire ton message est: - si le programme d'installation enregistre la DLL, est-ce que Excel/VBA est capable de la retrouver tout seul?
Le 21/02/2010 19:48, Eric S a écrit :
C'est possible d'enregistrer une simple DLL qui n'est pas un ocx, un activeX ou un objet COM+++?