Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classe non enregistrée VBA

8 réponses
Avatar
André
Salut à tous, j'ai expédié à un ami, un fichier Excel que j'ai programmé en
VBA, quand il active les macros, le fichier ne s'ouvre pas et une fenêtre
VBA s'affiche avec le message suivant:

La classe n'est pas enregistrée, recherche d'un objet avec CLSID
[AC9F2F90-E877-11CE-9F68-00AA00574A4F]

Son ordinateur est sous XP avec Excel 2000,
le fichier fonctionne très bien sur mon ordinateur, je suis sous XP avec
Excel 97

Est-ce que quelqu'un peut m'aider à résoudre ce problème?

André.

8 réponses

Avatar
michdenis
Bonjour André,

Ton classeur fait probablement référence à une référence
( dans la fenêtre de l'éditeur de macro / barre des menus / outils / references /)
que l'ordi. de ton ami ne possède pas... ou n'a pas la même version que toi.

Il est difficile d'aller plus loin.... sans connaître les références que ton projet
possède !

Si ton projetvba est déverouillé, Excel t'amènera à la ligne de code qui est problématique
et cela devrait répondre à ta question plus précisément.


Salutations!


"André" a écrit dans le message de news: e$3AuwY$
Salut à tous, j'ai expédié à un ami, un fichier Excel que j'ai programmé en
VBA, quand il active les macros, le fichier ne s'ouvre pas et une fenêtre
VBA s'affiche avec le message suivant:

La classe n'est pas enregistrée, recherche d'un objet avec CLSID
[AC9F2F90-E877-11CE-9F68-00AA00574A4F]

Son ordinateur est sous XP avec Excel 2000,
le fichier fonctionne très bien sur mon ordinateur, je suis sous XP avec
Excel 97

Est-ce que quelqu'un peut m'aider à résoudre ce problème?

André.
Avatar
Jacques93
Bonjour André,

le CLSID {AC9F2F90-E877-11CE-9F68-00AA00574A4F}, correspond à Microsoft
Forms :

WindowsSystem32fm20.dll

Salut à tous, j'ai expédié à un ami, un fichier Excel que j'ai programmé en
VBA, quand il active les macros, le fichier ne s'ouvre pas et une fenêtre
VBA s'affiche avec le message suivant:

La classe n'est pas enregistrée, recherche d'un objet avec CLSID
[AC9F2F90-E877-11CE-9F68-00AA00574A4F]

Son ordinateur est sous XP avec Excel 2000,
le fichier fonctionne très bien sur mon ordinateur, je suis sous XP avec
Excel 97

Est-ce que quelqu'un peut m'aider à résoudre ce problème?

André.




--
Cordialement,

Jacques.

Avatar
Jacques93
Bonjour André,

le CLSID {AC9F2F90-E877-11CE-9F68-00AA00574A4F}, correspond à Microsoft
Forms :

WindowsSystem32fm20.dll

Salut à tous, j'ai expédié à un ami, un fichier Excel que j'ai programmé en
VBA, quand il active les macros, le fichier ne s'ouvre pas et une fenêtre
VBA s'affiche avec le message suivant:

La classe n'est pas enregistrée, recherche d'un objet avec CLSID
[AC9F2F90-E877-11CE-9F68-00AA00574A4F]

Son ordinateur est sous XP avec Excel 2000,
le fichier fonctionne très bien sur mon ordinateur, je suis sous XP avec
Excel 97

Est-ce que quelqu'un peut m'aider à résoudre ce problème?

André.





--
Cordialement,

Jacques.

Avatar
Clément Marcotte
Bonjour,

S'il l'a toujours sur sa machine, il peut essayer, avec toutes les
applications Office fermées:

Menu Démarrer - Exécuter :

regsvr32 fm20.dll

Puisque c'est la bibliothèque des UserForms d'Office, il devrait l'avoir sur
son CD d'Office. Avec un peu de chance, il va s'en sortir avec un "Détecter
et réparer" dans le menu ? d'une application Office.

Sinon, il va devoir la rechercher sur le CD d'Office, la copier dans
c:windowssystem ou c:windowssystem32, puis faire le
regsvr32 fm20.dll


"André" a écrit dans le message de news:
e3%23oBjp$
Bonjour Mich, ta as raison, l'ordinateur de mon ami ne possède pas la
référence Microsoft Forms 2.0 objet Library,

sait-tu comment faire apparaître cette référence dans sa liste?

Dans mon ordinateur cette référence est stockée à:
C:WindowsSystem32Fm20.dll

Merci, André.



Avatar
André
Bonjour Mich, ta as raison, l'ordinateur de mon ami ne possède pas la
référence Microsoft Forms 2.0 objet Library,

sait-tu comment faire apparaître cette référence dans sa liste?

Dans mon ordinateur cette référence est stockée à:
C:WindowsSystem32Fm20.dll

Merci, André.
Avatar
André
Salut Jacques, sait-tu comment faire apparaitre Microsoft Form dans la liste
des références de l'éditeur VBA?

Merci, André.
Avatar
Pounet95
Bonjour,
Mille excuses de prendre en route ...

Dans l'éditeur VBE
Menu Outils sous menu Références
Dans la liste, cocher Microsoft Forms 2.0 Objects Library
qui correspond à la DLL FM20 en cause

Bonne journée

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"André" a écrit dans le message de news:
Oxv3nmp$
Salut Jacques, sait-tu comment faire apparaitre Microsoft Form dans la
liste des références de l'éditeur VBA?

Merci, André.



Avatar
michdenis
Bonjour André,

A ) C'est toujours une bonne idée de s'assurer que l'application développé ne contient pas
des références qui sont inutiles, le cas échéant.

B ) La problématique qui se pose avec les références est qu'elles ne sont pas nécessairement
situées au même endroit dans l'arborescence des fichiers de Windows. Selon le système
d'exploitation utilisé, la référence dont il est question peut se retrouver à différent endroit :

'A vérifier -> la mémoire est une faculté qui oublie ... ;-)
windows 98 et Millénium : C:WindowsSystemFm20.dll
Windows2000 C:WinntSystem32Fm20.dll
Windows Xp C:WindowsSystem32Frm20.dll

Conclusion évidente : Au chargement de l'application, Excel peut éprouver de la
difficulté à localiser la référence ... et envoie le message d'erreur que tu connais.

C ) Solution 1

Dans le ThisWorkbook, tu utilises la procédure événementielle suivante afin de
t'assurer que le chemin de la référence est bonne :
'---------------------------------
Private Sub Workbook_Open()
TesterBibliothequeFormulaire
End Sub
'---------------------------------


Dans un module Standard de ton application. copie ce qui suit :

'Haut de ton module, Déclaration de l'API
Private Declare Function GetSystemDirectory Lib "kernel32" _
Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
'--------------------------------
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
'--------------------------------
Sub TesterBibliothequeFormulaire()

Dim File As String
File = CheminSystem & "FM20.DLL"
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile File
End Sub
'--------------------------------


Solution II

Cette solution ne requiert pas d'API, mais tu dois connaître le GUID.

Lorsque tu utilises le GUID pour insérer des nouvelles références, comme dans
l'exemple que j'ai donné, cette procédure se fout complètement des chemins où
sont logés les fichiers, donc elle s'applique à tous les systèmes d'exploitations
Windows.(Jamais testé ça sur des versions windows 3.1 et plus ancien !)

De plus, même si la "Description de la bibliothèque (l'appellation dans la fenêtre référence)
à changer, si son nom de bibliothèque est demeuré le même(voir explorateur d'objet dans la
fenêtre VBE) , même si cette bibliothèque a subi des mises à jour,
la procédure s'applique très bien sans aucune difficulté.

IL y a seulement une petite exception, c'est lorsque Microsoft décide de modifier le nom de
la bibliothèque... Et ça arrive à l'occasion ....En conséquence, peu importe la façon utilisée,
il faut faire les recherches nécessaires et s'assurer que les références utilisées seront chargés
adéquatement à l'ouverture de l'application.

Sub TesterBibliothequeFormulaire2()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0D452EE1-E08F-101A-852E-02608C4D0BB4}", major:=2, minor:=0
End Sub
'--------------------------------

Comment trouver les paramètres : Guid, major et minor :
'--------------------------
Sub IdentifierParametreDuneReference()

Cells(1, 1) = ActiveWorkbook.VBProject.References("MsForms").Name
Cells(1, 2) = ActiveWorkbook.VBProject.References("MsForms").Description
Cells(1, 3) = ActiveWorkbook.VBProject.References("MsForms").GUID
Cells(1, 4) = ActiveWorkbook.VBProject.References("MsForms").Major
Cells(1, 5) = ActiveWorkbook.VBProject.References("MsForms").Minor
Cells(1, 6) = ActiveWorkbook.VBProject.References.Item("MsForms").fullpath

End Sub
'--------------------------


Et si tu désires enlever cette référence au formulaire,
A ) Supprimer tous les formulaires
B ) utiliser cette petite procédure :
'--------------------------------
Sub SupprimerUneReference()
'MsForms est le nom de la référence chargé par
'Microsoft Forms 2.0 object librairy"
Dim Ref As Object
With ThisWorkbook.VBProject
Set Ref = .References("MsForms")
.References.Remove Ref
End With

End Sub
'--------------------------------



Salutations!





"André" a écrit dans le message de news: e3%23oBjp$
Bonjour Mich, ta as raison, l'ordinateur de mon ami ne possède pas la
référence Microsoft Forms 2.0 objet Library,

sait-tu comment faire apparaître cette référence dans sa liste?

Dans mon ordinateur cette référence est stockée à:
C:WindowsSystem32Fm20.dll

Merci, André.