VB6->VBA Forms : Comment transférer les propriétés des champs sans les resaisir

Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011 - 8 nov. 2010 à 03:45
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 18 août 2011 à 07:54
Bonjour,

J'ai écrit une question assez longue et générale qui n'a pas encore de réponse :
Convertir une form VB6 (*.frm) en Form VBA (*.frm) Office 2003 ?
http://www.vbfrance.com/forum/sujet-CONVERTIR-FORM-VB6-FRM-FORM-VBA-FRM-OFFICE_1477600.aspx#

Je recentre en faisant court.
On peut exporter depuis VB6 toutes les informations utiles concernant une form.

Du coté importation le copier coller sur le code associé aux forms est immédiat et 95% compatible.
Pour le graphisme, la il faut redessiner, c'est long quand il y a plusieurs dizaines de forms.

Le plus lourd et complexe semble être les propriétés des composants, Il y a-t-il un moyen de redéfinir par programme les attributs des composants en utilisant le code VB6 ?

Merci d'avance,

Trebly

NB: J'ai plus de 100 000 lignes de code VBA écrits et je veux écrire quelques macros complémentaires pour compléter quelques fonctions, ceci à partir de code VB6, en l'occurence : Gestion de métadonnées, et, fait : FreeImage (qui n'a pas de form) et la xla a été crée et testée en moins d'une demi-heure avec ses 13000 lignes de code.

3 réponses

Trebly2 Messages postés 25 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 13 septembre 2011
18 août 2011 à 06:18
Bonjour,

Aucune réponse à ce sujet depuis près d'un an.

Éléments d'étude :


Il convient de noter que un fichier forms frm issu de VB6 définit l'ensemble de la form, dont les contrôles avec leurs paramètres.
Quand on exécute la commande "enregistrer sous" pour une form avec VBA on obtient deux fichiers *.frm et *.frx.
Le *.frm contient les propriétés générales de la form et le code associé à la form et aux contrôles.
Le fichier *.frx, quant à lui, est un fichier binaire qui contient de toute évidence la définition des contrôles.

En VB6 le fichier *.FRM (construit avec VB6) contient :
- les identifiants CSID des objets utilisés
- Les propriétés de VB.Form sous forme hiérarchisée
[list]
[*] Propriétés de la form
[*] Liste des contrôles avec leurs propriétés, éventuellement hiérarchisée (par exemple tabdlg.sstab contiendra pour chaque tab la liste des contrôles la composant) .
[*] Le code associé aux évènements
/list

Avec VBA aucune information concernant la définition des contrôles ne figure dans le *.FRM, où sont elles ? dans le *.FRX, sont-elles accessibles (convertibles) sous forme de fichier texte comme dans le FRM de VB6, comment ? La question qui s'est posée depuis deux ans est restée sans réponse.


Les couple de fichiers *.frm *.frx généré par VBA peut être ouvert en VB6, mais quand vous le sauverez vous obtiendrez trois fichiers :
[list]
[*] *.frm, contenant pas plus d'informations qu'à l'origine
[*] *.DCA, binaire
[*] *.dsx, binaire
/list
C'est le format du groupe de fichier type DSR : "designer files" de la form, seule possibilité offerte.

Je n'ai trouvé aucun moyen d'obtenir en clair la définition des forms de VBA ce qui pose un problème majeur de portabilité..

Conclusion


[b]Il s'agit d'un choix évident parfaitement intentionnel de MS ayant pour effet (incontournable et ne pouvant pas passer inaperçu constituant ainsi un objectif ?) de rendre irrécupérable le travail de conception et de développement de ces applications.
/b
MS, par là, s'est tiré une balle dans le pied, car les gens qui on fait confiance et on réalisé des développements importants, se trouvant ainsi pénalisés, se tournent vers d'autres solutions, de peur de se retrouver un jour dans la même situation.

En effet bien évidemment en l'absence de ces informations, qui de plus ne s'affichent plus lorsqu'un contrôle est "invalidé" pour un problème de changement de version du contrôle faisant suite à des mises à jour du système (changement de CSID) ou bien parfois de sa suppression pure et simple qui nécessite une adaptation d'un nouveau contrôle équivalent. Mais avec quelles données, on les pense à tort inscrites dans les sources.

Les solutions de sécurité sont extrêmement couteuses et consistent à :
[list]

[*] Garder une (des) machines figées à chaque niveau de développement (système + apps) l'information est perdue à moins que vous n'ayez gardé une version papier de vos applications, bonjour les couts !!!.

[*] Avoir donc écrit à la "mimine" les définitions de vos écrans avec les copies d'écrans associés et dans chaque configuration.
En fait travailler comme au début des années 80... /list

Et si vous ne l'avez pas fait, il vous faut réinstaller XP, réacquérir des licences de produits périmés (VB6, Office 2003) pour pouvoir avoir une chance de sauver vos applications, quand vous constatez la situation après avoir imprudemment changé de système (évidemment en développement et préparation d'évolution).

[b]Si quelqu'un sait comment obtenir à partir de VBA des fichiers FRM de même structure que les fichiers FRM de VB6 (et vb.net), créés avec VB6, c'est à dire un fichier texte décrivant toutes les propriétés de la form, merci de me le faire savoir.

/b

La question est en suspend depuis deux ans... et le système développé immobilisé sous XP, s'avère totalement impossible à porter vers Win7 notamment dans des conditions économiques normales.

On peut constater que faire vivre des applications dans la continuité des problèmes de gestion d'entreprises devient de plus en plus difficile et que les couts explosent pour les PME.

Bien cordialement

Trebly
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 août 2011 à 07:44
Bonjour,

Tu découvres que VBA n'est ni VB6 ni VB.Net ?
Tu vas bientôt découvrir que ni l'un ni l'autre de ces 3 langages ne sont un quatrième langage de ton choix (C, C++, C# ou autre) ?
Même certains contrôles de VBA (une listbox, par exemple et entre autres) sont très distincts de leurs homologues de VB6.
Etc... etc...
Pour répondre enfin à ta question mise en rouge dans ton message : Existent certains outils (MZ-TOOL, par exemple) gratuits et fort bien conçus pour ce faire.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 août 2011 à 07:54
En fait, la quasi-totalité des contrôles "natifs" utilisés dans VBA et VB6 sont distincts et n'ont pas toutes les mêmes propriétés. Ils n'ont en "commun" que le nom qui leur a été donné et ne sont pas "gérés" par les mêmes librairies.
Est-ce maintenant plus clair ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous