le contrôle conteneur n'est pas un conteneur valide

Résolu
ALBrustis - 18 janv. 2013 à 10:56
 Calade - 24 janv. 2013 à 07:51
Bonjour a tous
je bute sur le probléme suivant
Sur un projet en VB6
aprés l'avoir installé sur une autre machine
j'ai l'erreur suivante
au lancement du projet:
Impossible de charger le contrôle Fichier_; le contrôle conteneur n'est pas un conteneur valide
"le contrôle Fichier_" est en définitive le menu de la feuille
et surprenant j'ai une sauvegarde qui peut se charger
j'ai contourné le probléme en sauvegardant le code et les modif dans un fichier txt
que je copie et remplace après avoir chargé la sauvegarde

merci pour votre aide

78 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2013 à 18:09
Tu as là l'occasion de mesurer le risque couru lorsque l'on se rend dépendant d'ocx installés et utilisés par des logiciels externes. Une simple mise à jour du logiciel qui l'a installé (en l'occurrence, Adobler Flash Player) et te voilà le bec dans l'eau !
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 janv. 2013 à 19:09
Content que tu vois le bout du tunnel.

Viva Codas-Sourcas !
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 janv. 2013 à 11:10
Bonjour,
tu as probablement dans ton fichier .frm un contrôle activex censé contenir un contrôle autre nommé Fichier_
Il est bien évident qu'à défaut d'avoir installé et enregistré ces activex et avoir coché le 1er dans la boîte "contrôles supplémentaires", rien ne peut tourner.
Solution ;
- soit tu ne veux que l'exe sur l'autre machine === >> il te faudra alors y installer ton appli via un setup d'installation. Si les contrôles nécessaires sont libres, ils y seront installés et enregistrés à l'exécution du setup.
- soit tu veux installer ton projet sur l'autre machine (à condition bien évidemment qu'y soit installé VB6.exe) ===>> il te faudra alors :
---- y copier les composants nécessaires dans le dossier système
---- les y enregistrer (regsvr32)
---- les cocher dans la boîte des composants complémentaires
---- les mettre sur ton Form

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
18 janv. 2013 à 11:10
Bonjour,

Comment as tu réalisé ton setup d'installation'Es-tu sur le même OS que celle sur laquelle tu as développé?
Si tu utilises des DLL ou OCX spécifiques, il faut les inclure dans ton package d'installation, idéalement fait avec Innosetup + istools pour vb6

Voir dans la FAQ


L'expérience, c'est une connerie par jour, mais jamais la même..
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 janv. 2013 à 11:13
Salut

Perso, je n'ai absolument rien compris.

"aprés l'avoir installé sur une autre machine"
Vraiment installé ?
Quelle méthode ?
Quel OS de développement, quel OS sur cette autre machine ?

""le contrôle Fichier_" est en définitive le menu de la feuille"
Si toi tu ne sembles pas en être sûr ...
Tu dois quand même savoir comment tu as nommé tes composants/objets, non ?
Nommer un objet avec un _ final, c'est osé.

"et surprenant j'ai une sauvegarde qui peut se charger"
Ça veut dire quoi ?

"j'ai contourné le probléme en sauvegardant le code et les modif dans un fichier txt que je copie et remplace après avoir chargé la sauvegarde"
Donc tout va bien ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
0
Merci pour vos réponse
@ jack :
je me suis peut etre mal exprimé (malgré que ..)
je devellope sur vb6 entreprise
l'os XP (sur toutes les machines)n'a pas changer.. et oui.. toujours a l'ancienne !!

""le contrôle Fichier_" est en définitive le menu de la feuille"
Si toi tu ne sembles pas en être sûr ...
Tu dois quand même savoir comment tu as nommé tes composants/objets, non ?
Nommer un objet avec un _ final, c'est osé.

je n'ai pas dis que j'en etait pas sur
c'est je le souligne . le menu de vb6 pro
donc on ne peut pas parler ocx manquant

"et surprenant j'ai une sauvegarde qui peut se charger"

ca veut dire que c'est 2 fichier 1 frm et 1 frx
d'une date + ancienne

j'ai contourné le probléme en sauvegardant le code et les modif dans un fichier txt que je copie et remplace après avoir chargé la sauvegarde"
Donc tout va bien ?

donc tout ne vas pas bien
puisque si je sauvegarde la projet

je ne peut pas le recharger
et obligé de faire la manip si dessus

@ olokun merci pour votre réponse ce n'est pas un probleme d'installation

@ucfoutu merci pour votre réponse ce n'est un probleme ocx (malgré que ??) puisque c'est le menu crée avec vb6 pro

merci pour votre aide
j'espere pour jack avoir été plus clair
pensez vous que Nommer un objet avec un _
peut avoir une incidence
? ancienne version OK alors ?
peut il y avoir une propriété de la feuille en question (ou le menu n'a pu etre charger)
qui peut une grosse incidence ?

merci encore pour vos réponse rapide
vous d'autre solution ?
0
quelques mots manquant : il faut lire :

peut il y avoir une propriété de la feuille en question (ou le menu n'a pu être charger)
qui peut une grosse incidence ?

merci encore pour vos réponse rapide
avez vous d'autre solution ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 janv. 2013 à 19:15
Relis toi avant de valider. Même dans ta correction il manque des verbes.

Nommer un objet avec un _ final : Osé parce que le symbole _ est utilisé en fin de ligne pour que l'instruction en cours continue sur la ligne du dessous. Risque de mauvaise interprétation du compilo. Je ne m'y risquerai pas.

Quant à tes histoires de sauvegardes, pas tout pigé.
Sur ta forme, tu as implanté un menu. Bon.
(un seul ? plusieurs ?)

Que se passe t-il lorsque tu rentres dans le menu afin de le configurer ?
(clic-droit sur la forme + "Créateur de menus")

Utiliser les menus ou pas ne rajoute aucun composant dans ton projet.
Vérifie qu'il n'existe pas, quelque part dans ton code, un autre objet/variable portant ce même nom.

Avant de vouloir créer un EXE, est-ce que ton programme fonctionne avec un simple Ctrl-F5 ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 janv. 2013 à 19:17
PS : Par pitié, pas de message privé
0
re Bonsoir

*Sur ta forme, tu as implanté un menu. Bon.
(un seul ? plusieurs ?) *

ce menu est suivi de sous menu et est invisible je l'appelle par
"PopupMenu Fichier_

je retrace la manip :

1° je charge le projet avec les 2 anciens fichiers (frm et frx)pas de probleme.
a ce stade si je modifie le menu et enregistre le projet,je ne peut plus le recharger

2° j'affiche le module complet j'efface tout le code

3° j'ouvre mon fichier txt ou se trouve mon code le plus récent(et un sous menu supplémentaire),je copie tout le code
(Ctrl A puis Ctrl C
4°je reviens a ma feuille puis je colle tout le texte
a ce stade je vais recrer mon sous menu par Outils et Créateur de menus
si j'enregistre le projet je ne peut plus le recharger

cela va être difficile de faire plus clair

Info supp
a ce stade je peux créer le exe
ou même une installation il y a aucun problème en compilation

pour ne pas perdre mes mises a jour je copie tous le code du module dans le txt

Âpres vérif il n'existe pas, dans mon code, un autre objet/variable portant ce même nom.

merci encore
Avez vous d'autre solution ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 janv. 2013 à 11:48
D'accord, je vois mieux ton souci et tes solutions temporaires.
Donc tes menus ne te servent pas de menus traditionnels, mais de popups locales.

Quelle version de VB6 ? As-tu installé le <correctif SP6> ?

As-tu essayé de charger ton programme sur une autre machine équipée de VB6 pour voir si le phénomène se perpétue - on saura ainsi s'il s'agit d'un problème lié au projet ou bien de l'installation de ta machine)

Par acquit de conscience, peux-tu renommer ton menu Fichier_ en Fichier_X (objet et code), histoire de définitivement écarter ce soupçon du _ final.
Je viens de faire un test avec des appels en PopupMenu de menus se terminant par _ sans souci, mais bon ...

Le container, au sens VB6, est le support du composant, l'objet qui héberge le composant. Puisqu'il semble s'agir des menus, le container est donc la forme elle même.
Je te conseille de :
- créer un nouveau projet depuis 0
- de recréer ta forme avec les mêmes objets et les mêmes noms, mais surtout, sans copier coller ceux de ton ancienne forme.
- de faire une dernière fois ton copier-coller général du code.

Dis nous un peu quel genre de composants sont implantés sur ta forme (menu, bouton, listview, progressbar ...).
0
merci de votre aide
version VB 6.0 (version de 1987/1998)pour windows 32 bits
aucune mise a jour
oS XP sp3

une info sup
il suffit que dans le module de sauvegarde sur la form click je mette msgbox "test"
et que je sauvegarde le module pour que l'erreur revienne au meme endroit (au menu que j'ai renommé en fichier_1)et que je ne puisse plus recharger le projet.

franchement je ne me vois pas créer un nouveau projet depuis 0

les composants sur cette feuille:
label
timer
ccrpprogressbar
menu vb6
AnyButton
textbox
optionbutton
combobox
image
ShockwaveFlash


il y a trop de travail (pour test)c'est la feuille principale qui me cause soucis
les autres avec menu (qui ont été modifiés se chargent sans soucis

je n'ai pas installé le <correctif SP6>
vous avez un lien ? pour ma configuration ?

peut pas installer sur autre machine la 2°est HS..

merci encore
0
autant pour moi mauvais lien
il y a trop de travail (pour test)c'est la feuille principale qui me cause soucis
0
j'ai installé le <correctif SP6>
probleme idendique

il suffit que dans le module de sauvegarde sur la form click je mette msgbox "test"
et que je sauvegarde le module pour que l'erreur revienne au meme endroit (au menu que j'ai renommé en fichier_1)et que je ne puisse plus recharger le projet.

Ligne 1685: Impossible de charger le contrôle Fichier_1; le contrôle conteneur n'est pas un conteneur valide.

merci pour votre aide
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 janv. 2013 à 16:40
Le lien du SP6 est dans mon message précédent. Je te le conseille vivement.

As-tu essayé de sauvegarder ta forme sous un autre nom :
Si ta forme actuelle est enregistré sous le nom maForme.frm, enregistre-la sous un nouveau nom, maFormeNew.frm + Enregistre ton projet + sort et réouvre le projet.
Si l'erreur persiste, ce n'est pas une histoire de fichier vérolé.

Beaucoup de composants étrangers dans ta forme ...
Il faudrait essayer d'épurer ton projet en supprimant les composants (Ctrl-T) qui ne te servent pas.
A toi de faire le tri, mais regarde la liste de ceux qui seront installés : Dans le fichier .LST de ton install, File57 à File69
De toute façon, si tu décoches un composant dans la liste mais que celui-ci est utilisé dans une de tes formes, il refusera de le faire = pas de risque.
0
je cherche..je cherche...

A quoi correspond le début du module
est ce que l'ID de l'ocx est lié a Id du PC ?

VERSION 5.00
Object = "{D27CDB6B-AE6D-11CF-96B8-444553540000}#1.0#0"; "Flash10b.ocx"
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Object = "{FC07EBD4-FE92-11D0-A199-A0077383D901}#5.5#0"; "Hackprog.ocx"
Object = "{169D3A50-F17F-11D5-A5FC-000000000000}#1.0#0"; "anybouton.ocx"

pourquoi VERSION 5.00 ?

merci pour votre aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 janv. 2013 à 17:52
C'est VB , qui inscrit ces lignes
Il le fait lorsque tu mets sur un Form un contrôle activex présent sur ta machine et dûment enregistré
Lorsque tu ouvre à nouveau le projet, il vérifie à nouveau tant la présence que l'enregistrement?. S'il ne trouve pas, il remplace en général l'ocx concerné par une picturebox à laquelle il laisse le nom qui avait été donné au contrôle activex en cause.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 janv. 2013 à 17:58
Ah oui : les clsid des activex microsoft sont toujours les mêmes, quelle que soit la machine.
Les autres (activex personnalisés, donc) se voient attribuer un clsid libre à l'occasion de leur enregistrement par regsvr32


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 janv. 2013 à 18:07
Et je te rappelle ce que je t'ai déjà dit plus haut :
citation :
- soit tu ne veux que l'exe sur l'autre machine ===>> il te faudra alors y installer ton appli via un setup d'installation. Si les contrôles nécessaires sont libres, ils y seront installés et enregistrés à l'exécution du setup.
- soit tu veux installer ton projet sur l'autre machine (à condition bien évidemment qu'y soit installé VB6.exe) ===>> il te faudra alors :
---- y copier les composants nécessaires dans le dossier système
---- les y enregistrer (regsvr32)
---- les cocher dans la boîte des composants complémentaires
---- les mettre sur ton Form

Je voudrais par exemple te dire que MSCOMCTL.ocx n'est, d'origine, ni présent ni enregistré sur Vista et ultérieurs. Et ce n'est qu'un exemple.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Comment forcer un conteneur pour qu'il soit valide ?
y aurait t'il une déclaration de la feuille
qui pourrait contourner le problème ?

j'ai enregistré la form sous un autre nom.
simplement avec cette action la feuille ne plus plus se charger et l'erreur retombe au même endroit:

Ligne 1685: Impossible de charger le contrôle Fichier_1; le contrôle conteneur n'est pas un conteneur valide.

j'ai peut être été imprécis mais il y a que cette feuille qui ne se charge pas
les autres sont OK

en composants ocx étrangers il y en a 3
j'ai revu mes ocx ..ils sont tous utilisés..


merci pour votre aide
0
Rejoignez-nous