Erreur &H80040111 (-2147221231) ClassFactory ne peut fournir la classe demandée

Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011 - 8 avril 2009 à 01:04
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011 - 14 avril 2009 à 13:59
Bonjour,

J'ai développé des macros complémentaires assez volumineuses pour les besoins de l'entreprise dans l'environnement XP Pro SP2 et Office 2003.

Normallement lors du chargement le système affiche un message :
"Contexte .... actif, version N° ...... "
Lors du chargement d'un fichier le système précise les fonctions complémentaire offertes par l'environnement sur le fichier chargé (et menus associés).

Il y a maintenant plusieurs semaines à la suite de mise à jour de sécurité sur XP Pro SP3 et Office Pro 2003, ces macros sont devenues non exécutables, en effet le chargement des macro se conclut par le message

Message 1 =
 "Erreur système &H80040111 (-2147221231) ClassFactory ne peut fournir la classe demandée"

Lorsque l'on acquitte le message, on enchaîne vers : Message 2 = "Mémoire insuffisante", puis la fenêtre de gestion VB s'ouvre avec le message :

Message3 =
"Erreur de compilation :
Bibliothèque d'objets incorrecte ou contenant des références à des définitions d'objets introuvables"

Comme le même module contenue à fonctionner dans la même version sous win2000 SP4, on s'intéresse alors aux références :
- on découvre comme manquant effectivement : Acrobat distiller qui a été désinstallé mais n'était pas encore utilisé, sa désactivation et la tentative de compilation aboutit au message3 ci-dessus sans autre forme de procès.

Une tentative d'enregistrement aboutit à une dizaine de séquences d'erreurs identiques à celles ci-dessus (1 à 3)

Pour accéder à l'explorateur d'objets je dois acquitter 47 message1.

Lorsque l'on essaye d'ouvrir les "feuilles" plusieurs refusent de s'ouvrir avec le même message d'erreur.

A votre connaissance lorsqu'un tel message laconique (ne donnant aucun nom de classe ni d'objets concernés) s'affiche en tête d'une "grosse" macro

<ol><li>de quels outils dispose -t-on pour découvrir quelles classes sont devenues invalides après la mise à jour ?</li><li>comment trouver la mise à jour en cause (sans tenter un retour en arrière par mise à jour assez injouable) ?</li><li>comment trouver quels objets devenus invalides de manière impromptue ? (ce qui donnerait une piste sur les bibliothèques en référence qui ne sont plus acceptées, sécurité ?)</li><li>comment savoir pour quelles raisons les objets sont devenus invalides ?</li><li>ensuite comment trouver les classes et objets de remplacement ?</li></ol>

Merci d'avance pour toute aide

Trebly

NB: la macro principale :

   1. utilise 14 références
   2. comprend après accès 34 bibliothèques et évidemment pas loin de 1000 objets (en sus des natives)
   3. comprend 38 "feuilles" (écrans)
   4. comprend 35 Modules et 345 procédures pour 15000 instructions environ
   5. comprend 9 Modules de classes et 52 procédures pour 1500 instructions de modules de classe

Une macro d'utilitaires de bas niveau comprend environ 200 procédures et une dizaine d'écrans.

Alors comment mettre de l'ordre quand l'analyseur de classes utilisant VBIDE que j'ai écrit ne veut plus fonctionner non plus.

Il y a évidemment près de deux ans de travail fournissant des outils majeurs à l'entreprise.
Les fonctions essentielles sont :
- gestion de documents dont multimedia
- planning (graphes, calcul de charge, financier, toute grandeur économique)
- gestion de plans (sens xl)
- gestion de tous objets (lignes xl) avec documents associés (i.e. affichage de fax, photos, images scannées de documents - factures, commandes - etc...

Il s'agit d'un outil majeur dont la panne est catastrophique et malgré mon expérience je reste sans solution après plusieurs dizaines d'heures d'efforts.

13 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2009 à 06:18
Bonjour,

Je pense en premier lieu a un lien cassé en base de registres.

Procures toi Regmon:
http://technet.microsoft.com/en-us/sysinternals/bb896652.aspx

Ca te permettra d'observer les clés auquel ton executable va tenter d'acceder.

Possèdes tu encore au moins un poste non migré, qui pourrais nous serir de témoin ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2009 à 06:19
Travailles tu bien en VB6, comme je le pressent ?
ou en .Net, comme tu l'as indiqué dans le thème ?
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 avril 2009 à 09:51
Salut,

un truc commun sous excel est la perte de reference. Donc dans le VBE tu vas dans le menu  outil,references et tu cherches une ou plusieurs reference erronée et cochée. En general quand tu as ce type de message d'erreur c'est que les references non trouvées sont intercalées entre les bonne references. Cela a tendance a planter toute les references cochées qui suivent la ou les reference erronées.
0
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
8 avril 2009 à 14:21
Bonjour et merci de ces réponses rapides,

Je réponds dans l'ordre inverse (en général plus efficace, quoique ici ce soit pour le principe)

1- Réponse de bigfish_le vrai : Ce problème et méthodes associées me sont très familiers. Pour info ici une seule référence est devenue invalide, celle à Acrobat distiller (très vielle version non utilisée et désinstallée) donc je la désactive (décoche), aucune autre n'est notée manquante, la compil plante comme indiqué et les références sont toutes OK, mais... comme il n'est pas possible d'enregistrer je corrige au démarrage de chaque test.

2- Réponse de Renfield partie 1 : Eh oui les applis tournent avec des bibliothèques VB6 et à mon avis c'est bien là le problème, le gros de l'appli à été développée en 2003-2004, complétée été 2007 et à continué à tourner correctement jusqu'il y a quelques semaines, l'incident étant intervenu après des mises à jour de sécurité XP SP3 et Office2003, qui à mon avis bloque l'accès à un paquet de composants devenus non suffisamment sécurisés, comme celà l'a été en son temps pour "richtextbox". Le problème est le mode et la bonne organisation de cette migration vers .net, en effet la plupart des postes utilisateurs travaillent encore sous 2000 SP4.

3- Réponse de Renfield partie 2 : Je n'ai pas d'appli qui fonctionne sous XP mais une installation complète qui tourne sous 2000, et en complément donc une liste complète des bibiothèques, noms, fichiers, CSID etc... tout ce que sait donner VBIDE sous forme de fichier XL que j'utilisais pour installateur de mes applis VBA (absent du couple VBA - VB6 et qui existe en .net).

Infos complémentaires (cette nuit) : j'ai effectué des test sur cette version en Win2000 identique à ma version développement (la version opérationnelle étant dégraissée ne peut servir de base de travail) que j'ai pris soin de réinstaller manuellement complètement.
Comme l'ouverture de certaines "feuille"s (mot passablement mal adapté, entre parenthèses, vieille discussion VB6) ne peut se faire sous XP, je les ai ouvertes en W2k et comparé les composants.
Les composants qui sont communs aux feuilles et qui semblent génèrer l'erreur à leur niveau sont :
- Listview
- ImageView
- TreeView
- MSFlexGrid
- MSHFlexgrid
(nota: j'utilise les majuscules ici uniquement pour la lisibilité)

Les réponses à mes questions sont en grande partie presque toutes sous-entendues dans vos réponses interrogatives, en conséquence, ce qui sera d'ailleurs utile à d'autres membres probablement, les questions deviennent :
1- La Procédure (existe sur le site microsoft, je n'ai l'url sous la main) de migration VB6 vers VB.net pour Office 2003 pose-t-elle problème ou non
2- Les macros et bibliothèques tourneront-t-elles sans problèmes en .net (W2k SP4 se fait vieux, mais reste très utilisé en entreprises) ou bien faut-t-il passer par un packaging .net, ce qui représente a priori beaucoup de travail non prévu.

Merci d'avance à tous

Trebly
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
8 avril 2009 à 14:23
PS : bien sur j'applique de suite RegMon, merci à Renfield

Trebly
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2009 à 15:40
le SP6 de VB6 est il bien installé ? (very important)
0
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
8 avril 2009 à 16:40
Re- à Renfield

Oui.

Nota: le problème a commencé par une erreur de compil au démarrage sur une instance msflexgrid.
fort étonné et ne trouvant pas de solution, j'ai contrôlé les mises à jour et donc j'ai passé le SP6 de VB6 et plusieurs correctifs de sécurité Office et XP.

C'est alors que les messages rapportés sont apparus.

J'ai donc réinstallé tous les produits (y compris XP en mode réparation) et leurs mises à jour. Ainsi Update (XP, Office et VB) ne me proposent plus rien.

Le blocage des bibliothèques apparait depuis beaucoup plus en amont, en
particulier lors du chargement de la macro avant d'ouvrir la fenêtre de
gestion VBA (nota: au fur et à mesure des upgrades les messages ont été différents et à différents stades, ce qui laissait entrevoir une idée du problème, mais depuis avec ce blocage laconique on peut considérer l'environnement de développement comme quasiment muet).

Enfin j'ai installé pour la bonne bouche et pouvoir faire quelques développements .net Visual Studio 2009 Express sachant que je n'ai vraiment pas actuellement pas l'utilité de Visual Studio Pro 2008.

Merci de ton aide

A+

Trebly
0
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
8 avril 2009 à 17:51
Re Bonjour,

Le problème commence à prendre, peut-être une autre tournure, moins angoissante...
Par acquis de conscience j'ai tenté de repasser SP6 (après avoir répondu OUI catégoriquement à Renfield), SP6 qui normalement est une kb faisant partie des mises à jour après réinstallation (car je me souviens bien et être certain d'avoir été en sp6, mais comme j'ai du réinstaller... c'est souvent là qu'on rate des mises à niveau, tous produits confondus). Une installation très rapide s'est déroulée et après redémarrage la physionomie du problème à changé.

Les points successifs sont à noter :
1- Seul l'écran utilisant MSFlexGrid (1 seul cas, sinon j'ai des listview) génére au chargement une erreur :
"Bibliothèque d'objets incorrecte ou contenant des références à des définitions d'objets introuvables"
Tous les autres composants sont simples et sont normalement chargés et affichés. Il y donc lieu de mettre en cause MsFlexGrid par qui tout à commencé d'ailleurs.
2- La bibliothèque MsFlexGrid est bien dans les références (avec mention "SP6")
3- Le composant est chargé en boite à outils
4- Quand on crée un nouveau projet (totalement vide) et que l'on essaye de créer la première "form" et d'y insérer l'objet "msflexgrid sp6" on obtient le message d'erreur "Elément introuvable" et son insertion est impossible.

Premiers éléments de diagnostic :
- interaction des mises à jour de sécurité avec un environnement sans SP6
- problèmes migrants pendant les mises à jour complémentaires puis la réinstallation.
- problème global nettoyé par une remise à niveau de VB en SP6 une fois toutes les mises à jour passées.
- msflexgrid continue même en version SP6 à ne pas vouloir être utilisé. Le problème ressemble là à celui de richtext rencontré il y a plusieurs années.

Donc on a un point de fixation stratégique :
Pourquoi est-il devenu impossible de placer un composant msflexgrid sp6 dans une form, le tout avec un message laconique "Elément introuvable" le plus sans aide (panneau vide) ?

Merci d'avance à celui qui peut effectuer le test et informer la communauté,
ce qui, je l'espère, si l'on trouve le moyen d'utiliser "msflexgrid sp6" résoudra de facto mon problème.

Trebly
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2009 à 18:03
ouvre la dll de MsFlexgrid dans l'outil dependancy walker (depends.exe) qui doit normallement etre présent sur ton poste (vient avec visual studio)
au pire, trouvable sur le net.

ca permettra de s'assurer que toutes les dll requises par la grid sont disponibles.

panique pas, les dll qui sautent... ca arrive.

tu risque d'avoi simplement a replacer une dll dependante (autre version) ?
ou a réenregistrer le tout (RegSvr32)

msflxgrd.ocx
0
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
9 avril 2009 à 01:19
Bonsoir,

Merci à tous le problème est réglé.
J'ai cependant du mener un complément de recherche, dès lors ciblé, quelques opérations complémentaires ont suffi.
Merci à Renfield de la suggestion d'utiliser depends.

L'opération complémentaire était la suppression de *.exd et le message d'erreur "Elément introuvable" lors de la création d'une flexgrid disparait, mais aussi la compilation complète passe et l'application tourne à nouveau.

Je l'avais su et oublié, mais une recherche sur Google avec les mots clefs "msflexgrid vb6 sp6 vba" conduit à l'url où le problème est traité (mais pas à partir du même point de départ évidemment), voir :
http://www.tek-tips.com/viewthread.cfm?qid=1530759&page=1

C'est donc le temps de la synthèse que je tire :

<ol><li>- sur le plan pratique dans de tels cas :</li><ol><li>- réinstaller</li><li>- passer toutes les mises à jour</li><li>- pour les activeX éliminer les *.exd</li><li>- Si la solution n'est pas là, elle a de bonnes chances d'être ciblée

</li></ol><li>- sur le plan de l'analyse

</li><ol><li>- une mise à jour non passée suivie d'autres mises à jour postérieures, y compris suivant l'analyse d'Update peut conduire à une vraie catastrophe. Le problème est que si la mise à jour n'est suggérée on a toutes les chances de passer à coté si l'on est pas dans un job quotidien en alerte permanente.

</li><li>- les messages d'erreur liés à de tels problèmes sont d'une pauvreté désespérante

</li></ol><li>- sur le plan du service de l'éditeur
(ici MS, mais j'ai pour ma part développé en partie et eu la responsabilité de la maintenance et maintenu d'assez grosses applications dites de "progiciel" - plus de 100 000 lignes de code - et géré la hot-line et les mises à jour clients avec la responsabilité de la continuité du service, ... il y a un certain temps
)

</li><ol><li>- il est quasi inévitable qu'il y ait "percussion" entre des mises à jour, le vrai problème est de permettre de trouver rapidement la parade.

Si l'on est responsable du fonctionnement des produits pour de grands comptes on est sacrément sensible aux moyens nécessaires. sur ce plan, plusieurs facteurs sont essentiels (et une nouvelle fois je viens de le constater à mes dépends) :

</li><ol><li>- les messages d'erreur "globaux" sont trop souvent d'une pauvreté délirante : pourquoi "la bibliothèque..." sans dire laquelle, "des objets" sans dire lesquels, des fenêtres sans titre et donc, dont on ne sait même plus quelles applications les affichent. Est-ce que leurs développeurs se croient seuls au monde ?

</li><li>- les outils d'analyse sont le plus souvent des outils de développeurs pour les phases de debug en écriture jusqu'en première béta, et l'on oublie l'analyse quand un incident qui n'est pas le résultat d'un vrai bug se produit à l'exploitation parfois des années après la mise en service

</li></ol><li>- MS n'offre pas d'aide sans qu'il n'y ai un engagement financier important hors de portée de la plupart des PME.
Pour ma part, conseil freelance pour un éditeur à une époque, j'avais fait adopter la règle qui était d'accueillir la demande gratuitement puis d'orienter suivant la nature de la question en précisant un pré-diagnostic gratuit (effectué en rotation par des experts) :
</li><ol><li>Problème de formation au produit -> proposition d'assistance payante adaptée

</li><li>Problème de mise à jour connu - renvoi ciblé aux infos et proposition d'assistance payante adaptée
</li><li>Problème non reproductible, encore inconnu, a priori lié au contexte, défaillance système, matériel, drivers etc. : on affecte un N° d'incident non encore supporté

</li><li>Problème déja signalé, en cours d'analyse: on affecte un N° d'incident supporté, en attente
</li><li>Client assuré : le problème quel qu'il soit est transféré à la hot.

</li></ol><li>- Les forums apportent une aide gigantesque mais aussi nourissent les éditeurs.
Le taux de réponse aux problèmes vraiment nouveaux est faible et le délai de solution souvent très long, de plus la formulation du problème est un art difficile qui peut faire chuter le taux de réponse. Pour ma part, je gère les questions systématiquement ou réponds spontanément plus aléatoirement sur, plusieurs forums.

</li><li>- Le coût de l'incident est souvent énorme par rapport à celui des produits, le coût de possession est aléatoire, le coût de l'assurance exhorbitante pour les "petits".

</li><li>- En général, absence de retour des éditeurs (commerciaux) auprès de ceux qui apportent des solutions qu'ils exploitent, même un petit mail voire un message...
</li></ol></ol>C'est vrai, je suis intarissable sur le sujet, ayant occupé au cours des vingt dernières années à peu près tous les rôles. Mais j'avais envie de donner mon point de vue sur quelques thèmes dans cette conclusion heureuse d'un incident qui m'a coûté tout de même 7000€, c'est vrai je n'étais pas assuré ... Peut-être ces sujets sont-ils déja abordés sur ce forum (j'avoue ne pas avoir eu le temps de chercher), peut-être la philosophie de l'action et la déontologie méritraient-t-elles un débat.

A tous merci

Trebly 
0
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
9 avril 2009 à 01:26
PS: Une amélioration du forum serait de pouvoir "prévisualiser" les messages.

En effet en relisant après affichage je trouve pas mal des fautes de frappe voire d'orthographe que je ne vois pas à la rédaction (problème bien connu).

Je constate que la taille de police n'est pas prise en compte.

Trebly
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 avril 2009 à 06:37
Ravi de savoir ce problème réglé.

Concernant le support Microsoft, les MVP sont là en tant que premiere vague.
On fait ce qu'on peut, et aec un projet aussi vaste, difficile de diagnostiquer a distance.

Maintenant que j'ai eu vent de ce probleme, je m'en méfierai, à l'avenir.

ces fichiers EXD se créent dans le windows/temp ?

un des premiers reflex a adopter semble tout bêtement un nettoyage du disque, donc.

en tous cas, et me concernant, n'hésites pas a me recontacter, plus tard, sous n'importe quel pretexte.

bonne continuation
0
Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
14 avril 2009 à 13:59
Bonjour,

OK pour les MVP mais ils ne sont pas toujours si facilement accessibles.
En particulier en ce qui concerne leur activité sur le forum, mon expérience est que si celui qui a besoin d'aide cible mal son sujet, c'est à dire que si son message nécessite une "reformulation" (au sens des théories sur le communication) ou que le libellé du sujet est "vaseux", ses chances d'obtenir une réponse chutent énormément. Dans tous les cas le coût temps-délai est élevé.

Pour le fond, il va de soi que si le message "ClassFactory ne peut fournir la classe demandée" précisait la (ou les) classe(s) concernée(s) et pour les autres messages  le ou les noms d'objets la solution aurait été trouvée beaucoup plus rapidement.

A propos *.exd, il n'apparaissent pas uniquement en "temp" mais aussi dans le chemin :

<disque système>:\Documents and Settings\\Application Data\Microsoft\Forms
et ce sont eux qui posent problème.

A bientôt
Cordialement

Trebly 
0
Rejoignez-nous