Bonjour SFec,
Voici un exemple comment procéder pour installer un ocx lorsque tu
exportes un fichier .zip d'un classeur avec le fichier
ocx.
A ) Dézipper le fichier
B ) Conserver les 2 fichiers dans le même répertoire pour la première
ouverture du fichier .xls , afin que la procédure
d'installation de l'Ocx puisse trouver le chemin où le fichier ocx.
C ) À la première ouverture du fichier excel, cette procédure va
s'exécuter :
'Copie ceci dans le ThisWorkbook de ton classeur :
'------------------------
Private Sub Workbook_Open()
InstallationFichierOcxOuDLL
End Sub
'------------------------
Dans un module standard, copie ce qui suit :
'Haut d'un module Standard : Déclaration API
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As
Long
'-----------------------------
Sub InstallationFichierOcxOuDLL()
Dim FichierSource As String, FichierCible As String
Dim OcxFile As String, Chemin As String
OcxFile = "Msmask32.ocx"
Chemin = CheminSystem & ""
FichierSource = ThisWorkbook.Path & "" & OcxFile
FichierCible = Chemin & OcxFile
'Vérifie la présence de .oxc,dll dans le fichier système
If Dir(FichierCible) = "" Then
'Si pas trouvé,
'Vérifier que ce "ocx" est présent dans le même
'répertoire que ce fichier (ThisWorkbook.path)
'Afin de le copier dans le répertoire système de
'de l'ordinateur de l'usager
If Dir(FichierSource) = "" Then
MsgBox "Le ficher " & OcxFile & " n'est pas dans " & _
"le même répertoire de ce classeur! Vérifier !" & vbCrLf &
vbCrLf & _
"Afin d'assurer le bon fonctionnement des processus" & vbvrlf
& _
" d'automation de ce fichier, copier le fichier" & vbCrLf & _
" manquant le répertoire suivant : " & Chemin & vbCrLf &
vbCrLf & _
"Ce classeur se fermera à la fermeture de cette fenêtre.", _
vbCritical + vbOKOnly, "Info utilisateur"
ThisWorkbook.Close False
End If
'Copie du fichier ocx vers le répertoire système
FileCopy FichierSource, FichierCible
'Initialisation de l'ocx dans la base de registre
Shell Chemin & "regsvr32.exe " & OcxFile & " /s"
'Ajouter la référence au projet
Application.VBE.ActiveVBProject.References.AddFromFile FichierCible
End If
End Sub
'-----------------------------
Function CheminSystem()
Dim RetVal As Long
Dim SysDir As String
SysDir = Space$(256)
RetVal = GetSystemDirectory(SysDir, Len(SysDir))
If RetVal <> 0 Then
CheminSystem = Left$(SysDir, RetVal)
End If
End Function
'-----------------------------
Et en dernier lieu, il est même possible de faire disparaître ces
procédures du fichier après une installation réussie.
À toi d'y voir !
Salutations!
"sfec" a écrit dans le message de
news:
Bonjour,
il me semble avoir lu un jour une méthode pour réimplanter, par vba, un
contrôle supplémentaire tiers sur un formulaire Excel.
Pour résumer mon problème, j'ai une application Excel sur laquelle je
deverse le contenu d'un douchette laser par l'intemédiaire d'un OCX fourni
par le fabricant de la douchette.
Cet OCX ajoute un contrôle à la liste des contrôles supplémentaires
d'excel,
et il suffit de l'ajouter sur un formulaire pour pouvoir l'adresser et le
contrôler depuis le code vba de ce dernier.
Le problème est que lorsque je transporte mon application sur une autre
machine, et même si j'ai déjà installé l'OCX avant de lancer
l'application,
j'ai un plantage car le contrôle supplémentaire a disparu du formulaire
lors
du changement de machine. Et je dois par conséquent le remettre sur le
formulaire manuellement depuis la fenêtre VBA.
Je cherche donc un moyen de forcer cette réimplantation en VBA pour ne pas
avoir à ouvrir la fenêtre VBA et le faire manuellement ...
Merci d'avance pour votre aide.
S.Mariani
Bonjour SFec,
Voici un exemple comment procéder pour installer un ocx lorsque tu
exportes un fichier .zip d'un classeur avec le fichier
ocx.
A ) Dézipper le fichier
B ) Conserver les 2 fichiers dans le même répertoire pour la première
ouverture du fichier .xls , afin que la procédure
d'installation de l'Ocx puisse trouver le chemin où le fichier ocx.
C ) À la première ouverture du fichier excel, cette procédure va
s'exécuter :
'Copie ceci dans le ThisWorkbook de ton classeur :
'------------------------
Private Sub Workbook_Open()
InstallationFichierOcxOuDLL
End Sub
'------------------------
Dans un module standard, copie ce qui suit :
'Haut d'un module Standard : Déclaration API
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As
Long
'-----------------------------
Sub InstallationFichierOcxOuDLL()
Dim FichierSource As String, FichierCible As String
Dim OcxFile As String, Chemin As String
OcxFile = "Msmask32.ocx"
Chemin = CheminSystem & ""
FichierSource = ThisWorkbook.Path & "" & OcxFile
FichierCible = Chemin & OcxFile
'Vérifie la présence de .oxc,dll dans le fichier système
If Dir(FichierCible) = "" Then
'Si pas trouvé,
'Vérifier que ce "ocx" est présent dans le même
'répertoire que ce fichier (ThisWorkbook.path)
'Afin de le copier dans le répertoire système de
'de l'ordinateur de l'usager
If Dir(FichierSource) = "" Then
MsgBox "Le ficher " & OcxFile & " n'est pas dans " & _
"le même répertoire de ce classeur! Vérifier !" & vbCrLf &
vbCrLf & _
"Afin d'assurer le bon fonctionnement des processus" & vbvrlf
& _
" d'automation de ce fichier, copier le fichier" & vbCrLf & _
" manquant le répertoire suivant : " & Chemin & vbCrLf &
vbCrLf & _
"Ce classeur se fermera à la fermeture de cette fenêtre.", _
vbCritical + vbOKOnly, "Info utilisateur"
ThisWorkbook.Close False
End If
'Copie du fichier ocx vers le répertoire système
FileCopy FichierSource, FichierCible
'Initialisation de l'ocx dans la base de registre
Shell Chemin & "regsvr32.exe " & OcxFile & " /s"
'Ajouter la référence au projet
Application.VBE.ActiveVBProject.References.AddFromFile FichierCible
End If
End Sub
'-----------------------------
Function CheminSystem()
Dim RetVal As Long
Dim SysDir As String
SysDir = Space$(256)
RetVal = GetSystemDirectory(SysDir, Len(SysDir))
If RetVal <> 0 Then
CheminSystem = Left$(SysDir, RetVal)
End If
End Function
'-----------------------------
Et en dernier lieu, il est même possible de faire disparaître ces
procédures du fichier après une installation réussie.
À toi d'y voir !
Salutations!
"sfec" <sfec@msn.com> a écrit dans le message de
news:eOd1p9yxDHA.1932@TK2MSFTNGP09.phx.gbl...
Bonjour,
il me semble avoir lu un jour une méthode pour réimplanter, par vba, un
contrôle supplémentaire tiers sur un formulaire Excel.
Pour résumer mon problème, j'ai une application Excel sur laquelle je
deverse le contenu d'un douchette laser par l'intemédiaire d'un OCX fourni
par le fabricant de la douchette.
Cet OCX ajoute un contrôle à la liste des contrôles supplémentaires
d'excel,
et il suffit de l'ajouter sur un formulaire pour pouvoir l'adresser et le
contrôler depuis le code vba de ce dernier.
Le problème est que lorsque je transporte mon application sur une autre
machine, et même si j'ai déjà installé l'OCX avant de lancer
l'application,
j'ai un plantage car le contrôle supplémentaire a disparu du formulaire
lors
du changement de machine. Et je dois par conséquent le remettre sur le
formulaire manuellement depuis la fenêtre VBA.
Je cherche donc un moyen de forcer cette réimplantation en VBA pour ne pas
avoir à ouvrir la fenêtre VBA et le faire manuellement ...
Merci d'avance pour votre aide.
S.Mariani
Bonjour SFec,
Voici un exemple comment procéder pour installer un ocx lorsque tu
exportes un fichier .zip d'un classeur avec le fichier
ocx.
A ) Dézipper le fichier
B ) Conserver les 2 fichiers dans le même répertoire pour la première
ouverture du fichier .xls , afin que la procédure
d'installation de l'Ocx puisse trouver le chemin où le fichier ocx.
C ) À la première ouverture du fichier excel, cette procédure va
s'exécuter :
'Copie ceci dans le ThisWorkbook de ton classeur :
'------------------------
Private Sub Workbook_Open()
InstallationFichierOcxOuDLL
End Sub
'------------------------
Dans un module standard, copie ce qui suit :
'Haut d'un module Standard : Déclaration API
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As
Long
'-----------------------------
Sub InstallationFichierOcxOuDLL()
Dim FichierSource As String, FichierCible As String
Dim OcxFile As String, Chemin As String
OcxFile = "Msmask32.ocx"
Chemin = CheminSystem & ""
FichierSource = ThisWorkbook.Path & "" & OcxFile
FichierCible = Chemin & OcxFile
'Vérifie la présence de .oxc,dll dans le fichier système
If Dir(FichierCible) = "" Then
'Si pas trouvé,
'Vérifier que ce "ocx" est présent dans le même
'répertoire que ce fichier (ThisWorkbook.path)
'Afin de le copier dans le répertoire système de
'de l'ordinateur de l'usager
If Dir(FichierSource) = "" Then
MsgBox "Le ficher " & OcxFile & " n'est pas dans " & _
"le même répertoire de ce classeur! Vérifier !" & vbCrLf &
vbCrLf & _
"Afin d'assurer le bon fonctionnement des processus" & vbvrlf
& _
" d'automation de ce fichier, copier le fichier" & vbCrLf & _
" manquant le répertoire suivant : " & Chemin & vbCrLf &
vbCrLf & _
"Ce classeur se fermera à la fermeture de cette fenêtre.", _
vbCritical + vbOKOnly, "Info utilisateur"
ThisWorkbook.Close False
End If
'Copie du fichier ocx vers le répertoire système
FileCopy FichierSource, FichierCible
'Initialisation de l'ocx dans la base de registre
Shell Chemin & "regsvr32.exe " & OcxFile & " /s"
'Ajouter la référence au projet
Application.VBE.ActiveVBProject.References.AddFromFile FichierCible
End If
End Sub
'-----------------------------
Function CheminSystem()
Dim RetVal As Long
Dim SysDir As String
SysDir = Space$(256)
RetVal = GetSystemDirectory(SysDir, Len(SysDir))
If RetVal <> 0 Then
CheminSystem = Left$(SysDir, RetVal)
End If
End Function
'-----------------------------
Et en dernier lieu, il est même possible de faire disparaître ces
procédures du fichier après une installation réussie.
À toi d'y voir !
Salutations!
"sfec" a écrit dans le message de
news:
Bonjour,
il me semble avoir lu un jour une méthode pour réimplanter, par vba, un
contrôle supplémentaire tiers sur un formulaire Excel.
Pour résumer mon problème, j'ai une application Excel sur laquelle je
deverse le contenu d'un douchette laser par l'intemédiaire d'un OCX fourni
par le fabricant de la douchette.
Cet OCX ajoute un contrôle à la liste des contrôles supplémentaires
d'excel,
et il suffit de l'ajouter sur un formulaire pour pouvoir l'adresser et le
contrôler depuis le code vba de ce dernier.
Le problème est que lorsque je transporte mon application sur une autre
machine, et même si j'ai déjà installé l'OCX avant de lancer
l'application,
j'ai un plantage car le contrôle supplémentaire a disparu du formulaire
lors
du changement de machine. Et je dois par conséquent le remettre sur le
formulaire manuellement depuis la fenêtre VBA.
Je cherche donc un moyen de forcer cette réimplantation en VBA pour ne pas
avoir à ouvrir la fenêtre VBA et le faire manuellement ...
Merci d'avance pour votre aide.
S.Mariani