OVH Cloud OVH Cloud

Pb de forms

4 réponses
Avatar
Sébastien
Bonjour,

J'ai un petit souci qui ne semble pas évident à solutionner :

J'ai créé sous Excel2000 et sur un Pc équipé de w2k un classeur contenant
une ListBox toute bête me permettant d'afficher un choix multiple pour les
besoins de mon appli. Ca marche très bien !

Lorsque j'ouvre ce classeur sur un second Pc équipé d'excel XP (2002 donc !)
et de w2k également la ListBox est toujours présente physiquement dans le
classeur, le nom existe toujours mais excel ne reconnait pas le composant...
C'est à dire que le code associé à cette ListBox plante en indiquant objet
inconnu.
Comble de tout çà lorsque je souhaite afficher les propriétés de cette
ListBox, rien n'apparait.

Il s'agit pour être précis d'un composant standard excel (Microsoft.Forms)
et non pas d'une ListBox chargé depuis VBA.

Pour moi, il s'agit d'un pb de compatibilté ascendante entre les versions
mais normalement dans les 2 cas il s'agit de la version 2.0 de Microsoft.Forms

Si quelqu'un à une idée, je suis preneur... Est ce qu'il faut rejouter une
référence supplémentaire ???

Merci d'avance de vous pencher sur mon pb.

--
Sébastien.

Pour me répondre directement, remplacer nospam par s.millereux

4 réponses

Avatar
anonymous
Bonjour,

J'ai rencontré un problème similaire avec VB. En fait VB
allait cherché par défaut la dll de Office XP.

Je n'ai pas souvenir de quel clé du registre il s'agit
mais une recherche du nom de la dll pourra vous
renseigner. Donc vérifier dans le registre que la dll
spécifié ne soit pas référencée à 2 endroits distincts.

Pour ma part, j'ai solutionné en écrasant la dll de VBA
(office) par la dll de VB, ceux-ci n'étant pas de même
version.

J'espère avoir été assez clair, ce n'est peut-être pas la
solution à votre problème, mais enfin, c'est une idée !

N.B. Si vous avez VB sur votre poste, l'ordre
d'installation de VB et Office est pondérante sur la
version de la dll.

@+
-----Message d'origine-----
Bonjour,

J'ai un petit souci qui ne semble pas évident Ã
solutionner :


J'ai créé sous Excel2000 et sur un Pc équipé de w2k
un classeur contenant

une ListBox toute bête me permettant d'afficher un choix
multiple pour les

besoins de mon appli. Ca marche très bien !

Lorsque j'ouvre ce classeur sur un second Pc équipé
d'excel XP (2002 donc !)

et de w2k également la ListBox est toujours présente
physiquement dans le

classeur, le nom existe toujours mais excel ne reconnait
pas le composant...

C'est à dire que le code associé à cette ListBox
plante en indiquant objet

inconnu.
Comble de tout çà lorsque je souhaite afficher les
propriétés de cette

ListBox, rien n'apparait.

Il s'agit pour être précis d'un composant standard
excel (Microsoft.Forms)

et non pas d'une ListBox chargé depuis VBA.

Pour moi, il s'agit d'un pb de compatibilté ascendante
entre les versions

mais normalement dans les 2 cas il s'agit de la version
2.0 de Microsoft.Forms


Si quelqu'un à une idée, je suis preneur... Est ce
qu'il faut rejouter une

référence supplémentaire ???

Merci d'avance de vous pencher sur mon pb.

--
Sébastien.

Pour me répondre directement, remplacer nospam par
s.millereux


.



Avatar
michdenis
Bonjour Sébastien,

Si je peux tenter une réponse...

Lorsque tu ajoutes un formulaire à un projet, il y a une bibliothèque qui se charge automatiquement sans tu ais à intervenir.
Elle s'appelle : "Microsoft Forms 2.0 object librairy" .

Sous windows 2000, le fichier de cette bibliothèque est situé là : "C:WinntSystem32FM20.Dll

Sous Windows XP PRo, le fichier doit être situé là : "C:WindowsSystem32FM20.Dll" (dans ce cas, je n'ai pas pris la peine
de vérifier ... à faire... c'est sur mon autre partition .. et c'est un peu long tout ce rebootage..)

Par conséquent, si l'information s'avère véridique, comme les chemins ne sont pas les mêmes, il est normal que le fichier
chargé (Dll) ne puisse pas opérer normalement.

Voici une solution que je n'ai pas testée...puisque j'ai un cobaye ! ;-))

'Dans le ThisWorkbook de ton projet, ajoute ceci :
'-----------------------------
Private Sub Workbook_Open()
Sub BibliothequeFormulaire
End Sub
'-----------------------------


'Dans un module Standard, ajoute ceci :

'Dans le haut d'un module Standard, Déclaration de l'api
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Sub BibliothequeFormulaire()

Dim File As String
File = CheminSystem & "FM20.Dll"
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile File

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
'-----------------------------


Salutations!



"Sébastien" a écrit dans le message de news:
Bonjour,

J'ai un petit souci qui ne semble pas évident à solutionner :

J'ai créé sous Excel2000 et sur un Pc équipé de w2k un classeur contenant
une ListBox toute bête me permettant d'afficher un choix multiple pour les
besoins de mon appli. Ca marche très bien !

Lorsque j'ouvre ce classeur sur un second Pc équipé d'excel XP (2002 donc !)
et de w2k également la ListBox est toujours présente physiquement dans le
classeur, le nom existe toujours mais excel ne reconnait pas le composant...
C'est à dire que le code associé à cette ListBox plante en indiquant objet
inconnu.
Comble de tout çà lorsque je souhaite afficher les propriétés de cette
ListBox, rien n'apparait.

Il s'agit pour être précis d'un composant standard excel (Microsoft.Forms)
et non pas d'une ListBox chargé depuis VBA.

Pour moi, il s'agit d'un pb de compatibilté ascendante entre les versions
mais normalement dans les 2 cas il s'agit de la version 2.0 de Microsoft.Forms

Si quelqu'un à une idée, je suis preneur... Est ce qu'il faut rejouter une
référence supplémentaire ???

Merci d'avance de vous pencher sur mon pb.

--
Sébastien.

Pour me répondre directement, remplacer nospam par s.millereux
Avatar
Frédéric Sigonneau
Bonsoir Denis,

Si je peux me permettre, il est possible d'économiser un peu son clavier
(l'appel à l'API GetSystemDirectory) en utilisant la fonction Environ pour
retrouver le nom du dossier du système d'exploitation :

Sub BibliothequeFormulaire()
Dim File As String
File = Environ("windir") & "SYSTEM32FM20.DLL"
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile File
End Sub

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour Sébastien,

Si je peux tenter une réponse...

Lorsque tu ajoutes un formulaire à un projet, il y a une bibliothèque qui se charge automatiquement sans tu ais à intervenir.
Elle s'appelle : "Microsoft Forms 2.0 object librairy" .

Sous windows 2000, le fichier de cette bibliothèque est situé là : "C:WinntSystem32FM20.Dll

Sous Windows XP PRo, le fichier doit être situé là : "C:WindowsSystem32FM20.Dll" (dans ce cas, je n'ai pas pris la peine
de vérifier ... à faire... c'est sur mon autre partition .. et c'est un peu long tout ce rebootage..)

Par conséquent, si l'information s'avère véridique, comme les chemins ne sont pas les mêmes, il est normal que le fichier
chargé (Dll) ne puisse pas opérer normalement.

Voici une solution que je n'ai pas testée...puisque j'ai un cobaye ! ;-))

'Dans le ThisWorkbook de ton projet, ajoute ceci :
'-----------------------------
Private Sub Workbook_Open()
Sub BibliothequeFormulaire
End Sub
'-----------------------------


'Dans un module Standard, ajoute ceci :

'Dans le haut d'un module Standard, Déclaration de l'api
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Sub BibliothequeFormulaire()

Dim File As String
File = CheminSystem & "FM20.Dll"
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile File

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
'-----------------------------


Salutations!



"Sébastien" a écrit dans le message de news:
Bonjour,

J'ai un petit souci qui ne semble pas évident à solutionner :

J'ai créé sous Excel2000 et sur un Pc équipé de w2k un classeur contenant
une ListBox toute bête me permettant d'afficher un choix multiple pour les
besoins de mon appli. Ca marche très bien !

Lorsque j'ouvre ce classeur sur un second Pc équipé d'excel XP (2002 donc !)
et de w2k également la ListBox est toujours présente physiquement dans le
classeur, le nom existe toujours mais excel ne reconnait pas le composant...
C'est à dire que le code associé à cette ListBox plante en indiquant objet
inconnu.
Comble de tout çà lorsque je souhaite afficher les propriétés de cette
ListBox, rien n'apparait.

Il s'agit pour être précis d'un composant standard excel (Microsoft.Forms)
et non pas d'une ListBox chargé depuis VBA.

Pour moi, il s'agit d'un pb de compatibilté ascendante entre les versions
mais normalement dans les 2 cas il s'agit de la version 2.0 de Microsoft.Forms

Si quelqu'un à une idée, je suis preneur... Est ce qu'il faut rejouter une
référence supplémentaire ???

Merci d'avance de vous pencher sur mon pb.



Avatar
michdenis
Merci Frédéric, c'est vrai c'est un peu plus court !


Salutations!



"Frédéric Sigonneau" a écrit dans le message de news:%
Bonsoir Denis,

Si je peux me permettre, il est possible d'économiser un peu son clavier
(l'appel à l'API GetSystemDirectory) en utilisant la fonction Environ pour
retrouver le nom du dossier du système d'exploitation :

Sub BibliothequeFormulaire()
Dim File As String
File = Environ("windir") & "SYSTEM32FM20.DLL"
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile File
End Sub

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour Sébastien,

Si je peux tenter une réponse...

Lorsque tu ajoutes un formulaire à un projet, il y a une bibliothèque qui se charge automatiquement sans tu ais à
intervenir.

Elle s'appelle : "Microsoft Forms 2.0 object librairy" .

Sous windows 2000, le fichier de cette bibliothèque est situé là : "C:WinntSystem32FM20.Dll

Sous Windows XP PRo, le fichier doit être situé là : "C:WindowsSystem32FM20.Dll" (dans ce cas, je n'ai pas pris la peine
de vérifier ... à faire... c'est sur mon autre partition .. et c'est un peu long tout ce rebootage..)

Par conséquent, si l'information s'avère véridique, comme les chemins ne sont pas les mêmes, il est normal que le fichier
chargé (Dll) ne puisse pas opérer normalement.

Voici une solution que je n'ai pas testée...puisque j'ai un cobaye ! ;-))

'Dans le ThisWorkbook de ton projet, ajoute ceci :
'-----------------------------
Private Sub Workbook_Open()
Sub BibliothequeFormulaire
End Sub
'-----------------------------


'Dans un module Standard, ajoute ceci :

'Dans le haut d'un module Standard, Déclaration de l'api
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Sub BibliothequeFormulaire()

Dim File As String
File = CheminSystem & "FM20.Dll"
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile File

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
'-----------------------------


Salutations!



"Sébastien" a écrit dans le message de news:
Bonjour,

J'ai un petit souci qui ne semble pas évident à solutionner :

J'ai créé sous Excel2000 et sur un Pc équipé de w2k un classeur contenant
une ListBox toute bête me permettant d'afficher un choix multiple pour les
besoins de mon appli. Ca marche très bien !

Lorsque j'ouvre ce classeur sur un second Pc équipé d'excel XP (2002 donc !)
et de w2k également la ListBox est toujours présente physiquement dans le
classeur, le nom existe toujours mais excel ne reconnait pas le composant...
C'est à dire que le code associé à cette ListBox plante en indiquant objet
inconnu.
Comble de tout çà lorsque je souhaite afficher les propriétés de cette
ListBox, rien n'apparait.

Il s'agit pour être précis d'un composant standard excel (Microsoft.Forms)
et non pas d'une ListBox chargé depuis VBA.

Pour moi, il s'agit d'un pb de compatibilté ascendante entre les versions
mais normalement dans les 2 cas il s'agit de la version 2.0 de Microsoft.Forms

Si quelqu'un à une idée, je suis preneur... Est ce qu'il faut rejouter une
référence supplémentaire ???

Merci d'avance de vous pencher sur mon pb.