Convertir du Qbasic vers VBA

morest

XLDnaute Occasionnel
Salut à tous,

J'ai un logiciel créer sous QBasic que je souhaite transposer en VBA car dans l'état actuelle je comprends rien au code QBasic et ça à l'air bien horrible à comprendre. On dirai du Fortran ou un truc du genre. Plus je le regarde et plus ça me répugne :).

Bref quelqu'un aurait par hasard une solution pour résoudre mon problème? Merci d'avance pour tout contribution.

Bonne soirée.
 

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Bonsoir,
Je me permets de up mon post afin de savoir si quelqu'un pourrait m'orienter pour la traduction de ce code :p

Code:
1850 PRINT : INPUT " INCREMENT POUR LE CALCUL DES FLECHES"; INC
1860 DIM MOTORT(INT((L1 + L2) / INC) + 2)
1870 FOR X = 0 TO L1 + L2 - INC STEP INC
1880 MOTORT(INT(X / INC)) = SCN
1890 NEXT
1900 MOTORT(INT((L1 + L2) / INC)) = SCN
1910 FOR N = 1 TO NMOB
1920 FOR X = 0 TO L1 + L2 - INC STEP INC
1930 IF X > L1 + POSMOB(N) THEN MOTORT(INT(X / INC)) = MOTORT(INT(X / INC)) - CN(N)
1940 NEXT
1950 MOTORT(INT((L1 + L2) / INC)) = MOTORT(INT((L1 + L2) / INC)) - CN(N)
1960 NEXT
1970 DIM FLECHE(INT((L1 + L2) / INC) + 2)
1980 DIM MOFLEX(INT((L1 + L2) / INC) + 2)
1990 FOR N = 1 TO NMOB
2000 RA = FR(N) * POSMOB(N) / L1
2010 TRA = TRA + RA
2020 RB = FR(N) * (POSMOB(N) + L1) / L1
2030 TRB = TRB + RB
2040 LF = POSMOB(N)
2050 GOSUB 2260
2060 X = L1 + L2: FC = F + (L2 - LF) * SIN(PHIC)
2070 FLECHE(INT(X / INC)) = FLECHE(INT(X / INC)) + FC
2080 PRINT
2090 PRINT "fleche due en C au mobile "; N; " ="; FC
2100 NEXT
2110 FC = FLECHE(INT((L1 + L2) / INC))
2120 K1 = 2 * E2 * I2 / 6 / E1 / I1 * L1 * L2 - .5 * L1 * (2 * L2 + L1)
2130 K2 = -.5 * L1 ^ 2 * (L1 + L2) + 1 / 6 * L1 ^ 3
2140 K3 = 2 / 6 * (L1 + L2) ^ 3
2150 RC = E2 * I2 * FC / (K3 + K2 + K1 * L2)
2160 PRINT
2170 PRINT "valeur de la reaction en C annulant la fleche ="; RC; " N"
2180 RA = -RC * L2 / L1
2190 TRA = TRA + RA
2200 RB = -RC * (L2 + L1) / L1
2210 TRB = TRB + RB
2220 LF = L2
2230 GOSUB 2260
2235 X = L1 + L2: FLECHE(INT(X / INC)) = 0
2240 PRINT
2250 GOTO 2620
2260 C1 = -1 / 6 * RA * L1 ^ 2
2270 C3 = E2 * I2 * 2 / 6 / E1 / I1 * RA * L1 ^ 2 - .5 * (RA + RB) * L1 ^ 2
2280 C4 = -C3 * L1 - .5 * L1 ^ 3 * RB - 1 / 6 * (RA - RB) * L1 ^ 3
2290 PHIC = 1 / E2 / I2 * (.5 * (RA - RB) * (L1 + LF) ^ 2 + L1 * RB * (L1 + LF) + C3)
2300 THETAC = 360 * PHIC / 2 / PI
2310 X = L1 + LF: F = 1 / E2 / I2 * (1 / 6 * (RA - RB) * X ^ 3 + .5 * L1 * RB * X ^ 2 + C3 * X + C4)
2320 FOR X = 0 TO L1 + L2 - INC STEP INC
2330 IF X > L1 AND X <= L1 + LF THEN FLECHE(INT(X / INC)) = FLECHE(INT(X / INC)) + 1 / E2 / I2 * (1 / 6 * (RA - RB) * X ^ 3 + .5 * L1 * RB * X ^ 2 + C3 * X + C4): MOFLEX(INT(X / INC)) = MOFLEX(INT(X / INC)) + X * RA - (X - L1) * RB
2340 IF X <= L1 THEN FLECHE(INT(X / INC)) = FLECHE(INT(X / INC)) + RA / 6 / E1 / I1 * (X ^ 3 - L1 ^ 2 * X): MOFLEX(INT(X / INC)) = MOFLEX(INT(X / INC)) + X * RA
2350 IF X > L1 + LF THEN D = X - L1 - LF: FLECHE(INT(X / INC)) = FLECHE(INT(X / INC)) + F + D * SIN(PHIC)
2360 NEXT
2370 RETURN

Franchement je suis au bout du rouleau ;). C'est surtout les passages avec INT qui me bloque. J'arrive pas à extraire les formule de ce paté :(
Merci pour tout soutien.
 

jmps

Nous a quitté
Repose en paix
Re : Convertir du Qbasic vers VBA

Bonjour,

Je pense que tu ne prends pas le problème par le bon bout.

Un code, dans quelque langage que ce soit n'a de sens que si tu sais ce qu'il est sensé faire.
Or, vu tes explications je ne pense pas que tu le saches. Si je me trompe , tu peux le dire.

Je veux bien installer un Qbasic pour tester mais j'ai peur de perdre mon temps.

Dis plutôt ce que tu cherches à obtenir, ça ira plus vite.

EDIT : Quand je vois des GOTO et des GOSUB, je pense pas que ce soit encore exploitable ton code.
 
Dernière édition:

fhoest

XLDnaute Accro
Re : Convertir du Qbasic vers VBA

Bonjour,
avant de programmer en vba j'ai appris le qbasic en fait il s'agit quasiement de la même chose les goto reste des goto et les gosub sont simplement des call sub en vba.
les print te renvoi sur la console des messages tel une msgbox sur vba,
le int est gérer de la même facon cela veut dire entier de la valeur...
le return retoune au sub précédent.
etc...
A+
 

jmps

Nous a quitté
Repose en paix
Re : Convertir du Qbasic vers VBA

Bonjour fhoest,

J'ai également connu Basic, QBasic, GWBasic, TuttiquantiBasic, ...
Ça s'appelait de la programmation séquentielle si je me souviens bien. Avec les plats de spaghetti qui vont bien (Goto DEB, Goto SUITE, Goto FIN, Goto 7999, etc...)

En VBA on parle un peu plus de programmation structurée (For, While, Case, ...) et d'évenementiel.

Le code de morest est illisible pour plusieurs raisons :
- Zéro commentaires
- Noms de variables style ZX ou RB ou L1 et autres raccourcis pour gagner 3 octets.
Seul le programmeur (j'utilise ce terme pour pas dire développeur) sait à quoi ça correspond.

C'est du codage préhistorique. Sans doute sur un Amstrad CPC 464. Avec lecteur de disquettes 3".

J'ai aussi des vieux 45 tours au grenier mais faut les passer en mp3 à un moment.

C'est juste mon avis.

Alors si on savait ce qu'est sensé faire ce "programme" on pourrait aider morest.
Sinon y'a la solution de racheter un bon vieux PC XT sous DOS 2.00 avec un bel écran vert. Mais ça doit valoir la peau des fesses de nos jours.
 

fhoest

XLDnaute Accro
Re : Convertir du Qbasic vers VBA

Salut JMPS,
je suis d'accord avec toi mais notre amis est en détresse si on peut avec notre savoir l'aiguiller cela serait sympa,
n'es ce pas le but du forum...
bien dans la bonne humeur et pour ce qui est possible, peut etre qu'il essai de faire de la robotique et qu'il programme des EEproms
je pense toujours utilisé de nos jours (avec ce langage préhistorique pour certaine application électronique (je n'en suis pas sur))
mais il est vrai que si il nous en disait un peu plus cela serait plus attrayant.

Pour ce qui est des 45 tours et cassettes audio certaine personne remette tous ça au gout du jour du numérique et grâce a eux un jours c'est vieux tubes que tu aimer tant seront encore vivant,
mais n'es ce pas le cas de notre amis qui cherche a remettre au gout du jour son appli vieille comme les Amstrad
Allez Au plaisir.
 

ROGER2327

XLDnaute Barbatruc
Re : Convertir du Qbasic vers VBA

Bonjour à tous
Bon, on ne va pas y passer la nuit !
VB:
Const PI = 3.14159265358979
Dim C1, RA, L1, C3, E2, I2, E1, I1, RB, C4, PHIC#, LF, THETAC, F, L2, INC, D
Dim FLECHE(), MOFLEX()

Sub toto()
Dim X, SCN, N, NMOB, TRA, TRB, FC, K1, K2, K3, RC
Dim MOTORT(), CN(), POSMOB(), FR()
  INC = InputBox("INCREMENT POUR LE CALCUL DES FLECHES")
  ReDim MOTORT(Int((L1 + L2) / INC) + 2)
  For X = 0 To L1 + L2 - INC Step INC
    MOTORT(Int(X / INC)) = SCN
  Next X
  MOTORT(Int((L1 + L2) / INC)) = SCN
  For N = 1 To NMOB
    For X = 0 To L1 + L2 - INC Step INC
      If X > L1 + POSMOB(N) Then MOTORT(Int(X / INC)) = MOTORT(Int(X / INC)) - CN(N)
    Next X
    MOTORT(Int((L1 + L2) / INC)) = MOTORT(Int((L1 + L2) / INC)) - CN(N)
  Next N
  ReDim FLECHE(Int((L1 + L2) / INC) + 2)
  ReDim MOFLEX(Int((L1 + L2) / INC) + 2)
  For N = 1 To NMOB
    RA = FR(N) * POSMOB(N) / L1
    TRA = TRA + RA
    RB = FR(N) * (POSMOB(N) + L1) / L1
    TRB = TRB + RB
    LF = POSMOB(N)
    GSB_2260
    X = L1 + L2
    FC = F + (L2 - LF) * Sin(PHIC)
    FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + FC
    MsgBox "Flèche due en C au mobile " & N & "=" & FC
  Next N
  FC = FLECHE(Int((L1 + L2) / INC))
  K1 = 2 * E2 * I2 / 6 / E1 / I1 * L1 * L2 - 0.5 * L1 * (2 * L2 + L1)
  K2 = -0.5 * L1 ^ 2 * (L1 + L2) + 1 / 6 * L1 ^ 3
  K3 = 2 / 6 * (L1 + L2) ^ 3 'Et pourquoi pas 2327 / 6981 * (L1 + L2) ^ 3 ?
   RC = E2 * I2 * FC / (K3 + K2 + K1 * L2)
  MsgBox "valeur de la réaction en C annulant la flèche =" & RC & " N"
  RA = -RC * L2 / L1
  TRA = TRA + RA
  RB = -RC * (L2 + L1) / L1
  TRB = TRB + RB
  LF = L2
  GSB_2260
  X = L1 + L2
  FLECHE(Int(X / INC)) = 0
'GoTo 2620 '?????????????????????????????
End Sub

Sub GSB_2260()
Dim X
  C1 = -1 / 6 * RA * L1 ^ 2
  C3 = E2 * I2 * 2 / 6 / E1 / I1 * RA * L1 ^ 2 - 0.5 * (RA + RB) * L1 ^ 2
  C4 = -C3 * L1 - 0.5 * L1 ^ 3 * RB - 1 / 6 * (RA - RB) * L1 ^ 3
  PHIC = 1 / E2 / I2 * (0.5 * (RA - RB) * (L1 + LF) ^ 2 + L1 * RB * (L1 + LF) + C3)
  THETAC = 360 * PHIC / 2 / PI 'THETAC n'est utilisé nulle part…
  X = L1 + LF
  F = 1 / E2 / I2 * (1 / 6 * (RA - RB) * X ^ 3 + 0.5 * L1 * RB * X ^ 2 + C3 * X + C4)
  For X = 0 To L1 + L2 - INC Step INC
    If X > L1 And X <= L1 + LF Then
      FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + 1 / E2 / I2 * (1 / 6 * (RA - RB) * X ^ 3 + 0.5 * L1 * RB * X ^ 2 + C3 * X + C4)
      MOFLEX(Int(X / INC)) = MOFLEX(Int(X / INC)) + X * RA - (X - L1) * RB
    ElseIf X <= L1 Then
      FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + RA / 6 / E1 / I1 * (X ^ 3 - L1 ^ 2 * X)
      MOFLEX(Int(X / INC)) = MOFLEX(Int(X / INC)) + X * RA
    ElseIf X > L1 + LF Then
      D = X - L1 - LF: FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + F + D * Sin(PHIC)
    End If
  Next X
End Sub
Bien entendu, c'est inutilisable en l'état car on n'a visiblement qu'une partie du code : les variables (ou constantes, allez savoir…) ne sont, pour la plupart, ni typées, ni initialisées. En outre, le code est fort comique : entre autres facéties, le 2/6 m'a fait bien rire.
Je crois qu'il serait sage de réécrire tout cela proprement en partant des formules à traiter. (Encore faudrait-il que nous sussions de quoi il retourne…)​
ROGER2327
#4975


Lundi 2 Pédale 138 (Saint André Marcueil, ascète cycliste, SQ)
6 Ventôse An CCXIX
2011-W08-4T00:46:43Z
 

jmps

Nous a quitté
Repose en paix
Re : Convertir du Qbasic vers VBA

Salut Roger,

Beau travail mais je persiste à dire que ce code est illisible.
On ne connait pas l'objectif.

Si c'est pour transformer le plomb en or, je veux bien chercher un peu :p
 

jmps

Nous a quitté
Repose en paix
Re : Convertir du Qbasic vers VBA

B2 - 4AC * PI² Robert,

Ça veut dire bonsoir en assembleur Z80.
Enfin là je l'ai désassemblé mais ça veut toujours dire bonsoir.

Je commence à me demander si c'est pas du code de gestion d'ascenseurs Schindler... Hum hum...
Mais bon, on va faire comment pour aller au 26ème étage si y faut mettre une souris et un clavier en façade ?
Sans compter la licence Windows Seven 64 bits et Office 2010...

Je m'interroge mon bon Robert.......................................
 

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Salut à tous et de tout mon coeur merci pour votre aide diverse et divertissante parfois n'est ce pas JMPS, tu as totalement raison cependant ;) Ce code est unbuvable vieux moche mais c'est simplement un logiciel a rallonge pour faire pas grand chose ;).

Pour info il calcule les flèches et contrainte sur un arbre en rotation :p. Et en plus il donne en indication subliminale des positions géographique situant des puits de pétrole inutilisé ;) , info à vérifier ...^^

Roger : Je te tire mon chapeau pour avoir transposé ceci sur du vba. En effet certain goto ne sont pas présent sur le code que j'ai posé car le code est très vieux très long :). Et c'est les parties les plus horribles de l'autre côté.

Juste pour ôter cette frustration je colle le début et la fin de ce programme. Attention au vomissement occasionnés. Je ne sais pas trop si, avec mes connaissances Qbasic + VBA ainsi que de l'ébauche plus que parfaite de Roger, je vais réussir ou non à terminer la traduction.

Donc sur le fichier xlsx joint vous trouverez la totalité du code qui me rend totalement fou^^. Les parties en rouge sont maîtrisé/identifié comme inutile pour sortir la partie intéressante.

ROGER je sais pas si tu as la motivation d'y jeter un coup d'oeil. Tu as déjà fait beaucoup et j'en ai totalement conscience. Je vais déjà pouvoir un peu avancer sur le projet grâce à ton aide.

Un grand merci à tous pour l’intérêt que vous porté à ce thread.


PS : ce logiciel date de 1990, je pense que le "PC" sur lequel a été codé cette horreur est déjà totalement bio-dégradé xD. A l'origine ce petit programme était stocké sur un 5"1/4 lol ;)

PS 2 : Exact 2 / 6 c'est magique. Quand on voit la différence entre le Qbasic et le code vba c'est quand même choquant l'évolution.

Oui THETAC et même C1 ne sont nul par ailleurs, je pense que c'est un élément résiduel de l'autre partie quasiment identique de ce "programme" xD.

Bonne soirée.
 

Pièces jointes

  • pp.xlsx
    27.6 KB · Affichages: 208
Dernière édition:

jmps

Nous a quitté
Repose en paix
Re : Convertir du Qbasic vers VBA

Lu morest,

Je vois que tu as le sens de l'humour et ça me fait plaisir.
Mais je ne sais toujours pas ce que tu veux obtenir avec ce code (pardon j'ai pas ouvert ton xlsx).

Soit t'es nostalgique, soit t'es têtu ;)

Je persiste (je l'ai déjà dit non ?) à dire qu'il vaudrait mieux tout reprendre de zéro.
Si ça se trouve, en couchant ton problème sur un bout de papier, y'en a pour 12 lignes en VBA.

Ce lien n'existe plus
 

ROGER2327

XLDnaute Barbatruc
Re : Convertir du Qbasic vers VBA

Bonsoir à tous
Vous remarquerez que l'essentiel de la traduction que j'ai ébauchée se résume à la suppression des numéros de lignes doublé de quelques adaptations syntaxiques. Ne disposant que d'Excel2003, je n'ai pas lu le fichier .xlsx, mais, même s'il y a quelques centaines de lignes, ça ne devrait pas être trop difficile de s'en sortir en quelques heures.

Toutefois, la structure du résultat obtenu ne sera guère conforme à ce qu'on est en droit d'attendre dans VisualBasic : je persiste à croire qu'il vaudrait mieux partir du cahier des charges du projet, et réécrire directement le code en VB. On aurait alors un code optimisé, sans digressions inutiles.
ROGER2327
#4979


Lundi 2 Pédale 138 (Saint André Marcueil, ascète cycliste, SQ)
6 Ventôse An CCXIX
2011-W08-4T22:44:33Z
 

fhoest

XLDnaute Accro
Re : Convertir du Qbasic vers VBA

Bonjour,
OUAAAAAAAAAA!!!
t'es plein de courage on dirait,vaux mieux prendre comme Roger2327 et jmps te le disent prendre un papier un crayon et au boulot faire un schéma de ce que le programme fait puis reprogrammer le tout.
car si on analyse le programme ça reste du basic "pas à pas" sur une console avec toutes les instructions print cls etc..
sur quel support ce programme tourne aujourd'hui et comment as tu fais pour récupérer cette antiquité de 5"1/4.
ça ne m'étonne pas que le pétrole monte ,avec un truc pareil on n'est pas la d'en trouver lol;
A bientôt.
 

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Bonjour,

J'ai remis le fichier excel en 2003 pour ce qui n'aurait pas 2007.

J'ai déjà essayé la méthode reprise des grande lignes sur papier et même sur excel en essayant d'aasimiler les formules mais c'est très difficile au bout d'un mois j'ai laché l'affaire.

Par désespoir j'essaie par tout les moyens de comprendre ce code pour le transposer en vba^^.

Merci et bonne journée.
 

Pièces jointes

  • Excel2003.zip
    22.3 KB · Affichages: 81
  • Excel2003.zip
    22.3 KB · Affichages: 91
  • Excel2003.zip
    22.3 KB · Affichages: 77

Discussions similaires

Réponses
5
Affichages
353
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 251
Messages
2 086 623
Membres
103 266
dernier inscrit
moonie