VB6 vers VBA

Signaler
Messages postés
25
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
13 juin 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Voila, j'ai des frames en VB6 que je voudrai rapatrier sous VBA d'excel 2002.
Le code VB6 est de la forme :

VERSION 5.00
Begin VB.Form frmKeyB
BackColor = &H8000000D&
Caption = "KeyBoard"
ClientHeight = 7260
ClientLeft = 60
ClientTop = 345

Alors que celui de VBA est :

VERSION 5.00
Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} FrmTimer
Caption = "Wait time"
ClientHeight = 765
ClientLeft = 45
ClientTop = 330
ClientWidth = 4830
OleObjectBlob = "TTimer.frx":0000

Existe-t-il un outil permettant de faire la conversion automatiquement ?

Merci.

16 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,

Ne cherche pas midi à quatorze heures !
Après avoir inséré un Frame dans l'IDE de VBA, donne-lui les propriétés qui t'intéressent.
En appelant ton attention sur un fait : VBA ne travaille qu'en échelle de Points
Et comme tu ignores le scalemode du Form de ce que tu as trouvé en VB6, on ne peut même pas de guider vers une quelconque transposition des dimensions !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

d'aprés se que tu me montre, il n'y a pas grand chose à modifier :

Caption = "KeyBoard" <=> Caption = "Wait time"
(juste le nom qui change)
ClientHeight = 7260 <=> ClientWidth = 4830
ClientLeft = 60 <=> ClientLeft = 45
ClientTop = 345 <=> ClientTop = 330
(juste les valuers qui change)

aprés c'ets deux fonction diférente que tu nous montre.
le VBA et le VB6 on le même père, le vb. Il ne doit pas y avoir baucops de diférence au niveau du code
Messages postés
25
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
13 juin 2013
1
Non, en fait c'est 2 frames distinctes, elle ne font pas la même chose.
Je voulais juste montrer que VB6 à un format et que VB excel en a un autre.

Quand au échelle de points et scanmode ça ne me parle pas du tout, j'aime bien
les réponses plus compliquer que les questions : Ca sert à rien !

J'ai put voir dans d'autres forums qu'il était possible de prendre le code et de le
modifier à la main, mais ça me semble plus complexe que de refaire le frame ...

C'est pourtant comme ça que je crois que ça va finir, malheureusement.

Merci quand même.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Le scalemode (pas "sanmode") est l'échelle du container de tes objets.
Sous VB6, le développeur peut choisir entre différentes échelles. Sous VBA : il n'a pas ce choix (échelle imposée en points).
Il se trouve que les dimensions exprimées dans la fenêtre de propriétés le sont en unité de cette échelle.
Raison pour laquelle j'ai écrit :
Et comme tu ignores le scalemode du Form de ce que tu as trouvé en VB6, on ne peut même pas de guider vers une quelconque transposition des dimensions !

et je ne vois aucune autre manière d'exprimer tout cela, sauf à écrire plusieurs pages !
J'ai put voir dans d'autres forums qu'il était possible de prendre le code et de le
modifier à la main, mais ça me semble plus complexe que de refaire le frame ...

C'est pourtant comme ça que je crois que ça va finir, malheureusement.

Cela me parait assez évident.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
je peux par exemple deviner, à l'examen/comparaison des dimensions montrées, que le Form du projet VB6 concerné est en échelle de twips (totalement inconnu en projet VBA) .
Cette déduction devinée est peut-être la bonne pour ce projet-là et elle ne saurait être appliquée à TOUS les projets VB6 que tu trouveras !
Faire alors un outil "universel" de "transposition" est totalement illusoire.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

Si j'ais bien compris, c'est un question d'échel?

Une macro sur Word ne suffirai pas ??

Tu colle ton code dans un fichier Word
Tu fais une macro :

sub macro ()

dim i as double, text as string
text = code contenu dans le fichier Word
i=1
Échelle=conversion twips en points 
Boucle de lecture du code

if Mid(text, i, 1)=&#8221; ClientHeight&#8221; or Mid(text, i, 1)=&#8221; ClientLeft&#8221;&#8230; then
&#8216;Détermine la valeur après le =
&#8216;Multiplie par Échelle
&#8216;Remplace la valeur
End if
I=i1
Fin boucle de lecture du code
end sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Rho ...gourmand86

1) relis donc ce que j'ai écrit ! tu ne sauras jamais l'échelle utilisée dans le projet VB6
et je pense que ce qu'il recherche, c'est un outil de transposition (pas pour ce seul projet, quand-même, ... car il aurait plus vite fait de reconstruire que d'écrire un code)
2) les propriétés des contrôles de VB6 et de VB5 ne sont pas toutes les mêmes
3) et je ne parle pas des méthodes et des évènements, dont certains seront différents et à adapter !

Voilà !




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

tu ne sauras jamais l'échelle utilisée dans le projet VB6

? pouirquoi ?
Tu ne dit jammais quelle l'échelle tu a utilisé ?
Comment le programme connais les dimensions l’or de l’exécution si tu ne luis donne pas l’échelle ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
commence donc par chercher l'échelle (scalemode) dans ce qu'il a relevé dans le fichier .frm.
Reviens ensuite.

Ceci étant dit : en twips si aucune échelle spécifique autre mentionnée en propriété scalemode.

Et quand tu auras résolu ce "détail", tu as tous les autres (relis-moi) à régler (si tu le peux)

Mais je pense que 20centVidal a beaucoup de chance ! Il vient de trouver quelqu'un (toi) tout-à-fait disposé à lui faire ce "petit" programme de transposition de VB6 vers VBA.

N'oublie pas de déposer un source de ce programme, si tu y parviens


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

C’est par ce que je ne pratique pas le VB6 plus que sa que je te pose toute ses questions.
A par l’échelle, qu’elles sont les gros différences (au niveau du code) entre le VBA et le VBA ?
Messages postés
25
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
13 juin 2013
1
Bien, bien, ne nous emballons pas, je pensez qu'il serai simple de prendre une frame crée avec un VB, 6 en occurrence, et de l'envoyer dans un autre VB. Je comprends les facteurs d’échelles maintenant, comme je l'ai dits je pense qu'il sera plus simple de refaire mes 3 frames plutôt que chercher une solution qui n'existe pas. Dommage, c'est encore une astuce de Microsoft pourquoi faire simple quand ont peut faire plus compliqué ...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Je te l'ai dit (relis)
Quant à en faire ici l'inventaire ===>> pas question car il occuperait à lui seul plusieurs pages (au moins une dizaine) dans cette discussion. Une autre fois : bien que les contrôles soient de même nom, ils ne SONT PAS EXACTEMENT LES MEMES ( à commencer par une simple listbox), n'ont tous pas les mêmes propriétés, ne répondent pas tous aux mêmes évènements, etc... etc ...
Arrêtons ici, s'il te plait.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
et ce n'est pas pour rien qu'il y a ici une section pour VB6 et une autre pour VBA !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

Avent de faire se programme, j’aimerais comprendre pourquoi tu dis que c’est impossible (ou très difficile).
D’après se que j’ais compris sur le net : scalemode défini l’échelle utiliser. Or tu connais l’échelle utiliser, tu connais l’échelle que tu veux, tu peux faire la convertirons.

2) les propriétés des contrôles de VB6 et de VB5 ne sont pas toutes les mêmes
3) et je ne parle pas des méthodes et des évènements, dont certains seront différents et à adapter !

Je me doute que se sera la qu’il y aura le plus de travail.
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

Excuser le message précédant. (pas vue la page 2 ^^)
ils ne SONT PAS EXACTEMENT LES MEMES

Je comprends mieux pourquoi se sera difficile à faire
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Voilà !
En un mot : les contrôles de VBA, bien que très similaires, ne sont pas issus des mêmes bibiothèques que celles contenant ceux de VB6.


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