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.
 

fhoest

XLDnaute Accro
Re : Convertir du Qbasic vers VBA

Bonjour,
Voici un début,
mais bien sur je pense qu'il faille revoir beaucoup de chose notamment l'utilisation d'un userform avec plusieurs textbox qui récolte les information a la place des inputbox
des dimensionnement des variables plus juste car j'ai simplement enlever les $
j'ai laisser les lignes pour les renvois vers les numéro de ligne ,
je pense que tu dois créer plusieurs sub pour plus de clarté.
ensuite controler les entrées de valeurs avec des boucles ou du code qui permet de ne pas entrée du texte par exemple pour du chiffres et encore et encore......(beaucoup de boulot)
tu prend le code tu le colle dans un modules et tu travaille pas a pas (tu ouvre la fenêtre exécution pour les instructions d'affichage style console)dans VBA affichage -fenetre execution
ensuite pas a pas avec la touche F8 tu execute ton code ligne par ligne ,
tu pourras ainsi corrigé le reste...
voici le code:
Code:
Sub test()
10 RET = Chr$(17) + Chr$(196) + Chr$(196) + Chr$(217)
20 Pi = 3.141592654
30 X1$ = Chr$(196)
40 X2$ = Chr$(179)
50 X3$ = Chr$(218)
60 X4$ = Chr$(191)
70 X5$ = Chr$(192)
80 X6$ = Chr$(217)
90 X7$ = Chr$(194)
100 X8$ = Chr$(193)
105 On Error Resume Next 'GoTo 10000
110 'SCREEN 0, 1, 0, 0
120 ''CLS
125 ' Key 1, "ENTREE AUTO."
126 'KEY(1) OFF
130  'Key OFF
'la variable R n'est pas utilé avant cette ligne elle renvoi donc une erreur

140  Dim FNROUND:  FNROUND(R) = Int(R * 100 + 0.5) / 100
150  'Color 3,
160  Debug.Print: Debug.Print: Debug.Print
170  Debug.Print "                 ****************************************"
180  Debug.Print "                 *  CALCUL DE LA PUISSANCE A INSTALLER  *"
190  Debug.Print "                 *  Cas d'un arbre avec palier de fond  *"
200  Debug.Print "  "
210  Debug.Print "                     ( Programme - POWERP - 30/03/90 )"
220  Debug.Print: Debug.Print: Debug.Print
230 Debug.Print "                   POUR RETOURNER AU MENU TAPER ----- 1"
240 Debug.Print: Debug.Print
250 Debug.Print "                   POUR LANCER LE PROGRAMME TAPER --- 2"
260 Debug.Print: Debug.Print: Debug.Print
270 CH = InputBox("                           VOTRE CHOIX ------ ")

'' faire des sub différents et des appel au sub en fonction du choix.
280 On CH GoTo 290, 300
290 MsgBox "Run MENU"
300 'CLS
310 Debug.Print: Debug.Print: Debug.Print
320 DAT = InputBox(" DATE            : ")

330 CLIENT = InputBox(" CLIENT          : ")
340  PLAN = InputBox(" Nø PLAN         : ")
350 REF = InputBox(" REFERENCE       : ")
360 REP = InputBox(" REPERE APPAREIL : ")
370 Debug.Print: Debug.Print: Debug.Print: 'Color 2, 0
380 NMOB = InputBox(" NOMBRE DE MOBILES D'AGITATION          ")
390 Debug.Print
400  MV = InputBox(" DENSITE DU MELANGE                     ")
410 Debug.Print
420 VISCO = InputBox(" VISCOSITE DU MELANGE  en cPo           ")
430 Debug.Print
432 DT = InputBox(" TEMPERATURE de CALCUL en øC            ")
433 Debug.Print
440 DC = InputBox(" DIAMETRE DE LA CUVE en mm              ")
450 'CLS
460 Debug.Print: Debug.Print: Debug.Print: 'Color 3, 0
470 Debug.Print "  LE MOBILE D'AGITATION REPERE 1 EST LE MOBILE LE PLUS HAUT DANS LA CUVE"
480 Debug.Print: Debug.Print: Debug.Print: 'Color 4, 0
490 Debug.Print "  POUR CONTINUER TAPEZ  "; RET
500 y = InputBox("Y")
510 GoSub 530: GoTo 1210
520 Rem --------------------------------------------------------------------
530 DX = 0
540 QX = 0
550 'CLS:  Color 4, 0: Debug.Print " Si vous souhaitez laisser une valeur inchang‚ frappez "; RET$: Debug.Print: Debug.Print: Color 6, 0
560 Debug.Print "                       VITESSE DE ROTATION en tr/mn : "; VN
570 InputBox "                       NOUVELLE VALEUR              :  ", N$: If N$ <> "" Then VN = Val(N$)
580 V = 0
590 V = V + 1
600 'CLS
610 'Color 6, 0:
Debug.Print "     Si vous souhaitez laisser une valeur inchang‚ frappez "; RET: Debug.Print "Entr‚e automatique des paramŠtres du mobile : frappez [F1] puis "; RET: Debug.Print: Debug.Print
620 'Color 4, 0
630 Debug.Print "          CARACTERISTIQUES DU MOBILE D'AGITATION REP "; V
640 Debug.Print: 'Color 2, 0
650 Debug.Print "           TURBINE  TAPEZ ----- T : HELICE TAPEZ ----- H"
660 Debug.Print: 'Color 3, 0
670 If CH(V) = "T" Or CH(V) = "H" Then Debug.Print "    TYPE D'AGITATEUR : " & CH(V): InputBox "    NOUVEAU TYPE : " & CH: If CH = "" Then GoTo 750
680 Dim FC: If CH(V) <> "T" And CH(V) <> "H" Then FC(V) = 1: CH = InputBox("                      VOTRE CHOIX   ")
690 If CH = "T" Or CH = "H" Then CH(V) = CH: GoTo 750
700 'CLS
705 If CH = "ENTREE AUTO." Then GoSub 7000: GoTo 600
710 Debug.Print: Debug.Print: Debug.Print
720 Debug.Print "   REPONDRE IMPERATIVEMENT A CETTE QUESTION PAR   T  ou   H"
730 Debug.Print: Debug.Print
740 GoTo 620
750 Debug.Print
760 Dim D 'Color 6, 0
770 Debug.Print "              DIAMETRE DU MOBILE en mm                      = "; D(V)
780 InputBox "              NOUVELLE VALEUR                               : ", D
785 If D = "ENTREE AUTO." Then GoSub 7000: GoTo 600
786 If D <> "" Then D(V) = Val(D)
790 Debug.Print
800 If CH(V) = "T" Then GoTo 850
810 Dim PH: Debug.Print "              PAS DU MOBILE en mm                           = "; PH(V)
820 InputBox "              NOUVELLE VALEUR                               : ", PH
825 If PH = "ENTREE AUTO." Then GoSub 7000: GoTo 600
826 If PH <> "" Then PH(V) = Val(PH)
830 Debug.Print
840 If CH(V) = "H" Then GoTo 880
850 Dim ALP: Debug.Print "              INCLINAISON DES PALES en degr‚s               = "; ALP(V)
860 InputBox "              NOUVELLE VALEUR                               : ", ALP
865 If ALP = "ENTREE AUTO." Then GoSub 7000: GoTo 600
866 If ALP <> "" Then ALP(V) = Val(ALP)
870 Debug.Print
880 Dim NP: Debug.Print "              NOMBRE DE PUISSANCE                           = "; NP(V)
890 InputBox "              NOUVELLE VALEUR                               : ", NP: If NP <> "" Then NP(V) = Val(NP)
895 If NP = "ENTREE AUTO." Then GoSub 7000: GoTo 600
900 Debug.Print
910 Debug.Print "              COEFFICIENT DE DESEQUILIBRE HYDRAULIQUE       = "; R(V)
920 InputBox "              NOUVELLE VALEUR                               : ", R: If R <> "" Then R(V) = Val(R)
925 If R = "ENTREE AUTO." Then GoSub 7000: GoTo 600
930 Debug.Print
940 Debug.Print "              FACTEUR DE CORRECTION DE PUISSANCE  FC"
950  Debug.Print "              En fonction du nombre de mobiles d'agitation  = "; FC(V)
960 InputBox "              NOUVELLE VALEUR                               : ", FC
965 If FC = "ENTREE AUTO." Then GoSub 7000: GoTo 600
966 If FC <> "" Then FC(V) = Val(FC)
970 Debug.Print
980 Dim NQ: Debug.Print "              NOMBRE DE DEBIT DU MOBILE                     = "; NQ(V)
990 InputBox "              NOUVELLE VALEUR                               : ", NQ: If NQ <> "" Then NQ(V) = Val(NQ)
995 If NQ = "ENTREE AUTO." Then GoSub 7000: GoTo 600
1000 Rem -----------------------------------------------------------------------
1010 Dim BET: BET(V) = ALP(V) * (Pi / 180)
1020 If CH(V) = "H" Then GoTo 1070
1030 Rem ----- Calcul pour turbine
1040 Dim PC: PC(V) = NP(V) * ((D(V) / 10 ^ 3) ^ 5) * ((VN / 60) ^ 3) * MV * FC(V)
1050 Dim Q: Q(V) = NQ(V) * ((D(V) / 10 ^ 3) ^ 3) * VN * 60
1060 GoTo 1150
1070 If ALP(V) = 30 Then GoTo 1130
1080 Rem ----- Calcul pour helice avec pas
1090 PC(V) = NP(V) * ((D(V) / 10 ^ 3) ^ 2) * ((PH(V) / 10 ^ 3) ^ 3) * ((VN / 60) ^ 3) * MV * FC(V)
1100 Q(V) = NQ(V) * ((D(V) / 10 ^ 3) ^ 2) * (PH(V) / 10 ^ 3) * VN * 60
1110 GoTo 1150
1120 Rem ----- Calcul pour helice 30ø
1130 PC(V) = NP(V) * ((D(V) / 10 ^ 3) ^ 5) * ((VN / 60) ^ 3) * MV * FC(V)
1140 Q(V) = NQ(V) * ((D(V) / 10 ^ 3) ^ 3) * VN * 60
1150 Dim CN: CN(V) = (PC(V) * 9550) / VN
1160 Dim FR: FR(V) = CN(V) / (R(V) * (D(V) / 10 ^ 3))
1170 If D(V) > DX Then DX = D(V)
1180 If D(V) = DX Then QX = Q(V)
1190 If V < NMOB Then GoTo 590
1200 Return
1210 V = 1: SPC0 = 0: SFR = 0: SCN = 0: SQT = 0
1220 For i = 1 To NMOB
1230 SPC0 = SPC0 + PC(V)
1240 SFR = SFR + FR(V)
1250 SCN = SCN + CN(V)
1255 SQT = Sqr((SQT) ^ 2 + (Q(V)) ^ 2)
1260 V = V + 1
1265 SQY = SQT / 60
1270 Next
1280 K = ((4 * QX) / (60 * Pi) * 1 / ((DC / 10 ^ 3) ^ 2 - (DX / 10 ^ 3) ^ 2))
1290 Rem --------------------------------------------------------------------
1300 'CLS
1310 Debug.Print: Debug.Print: Debug.Print: 'Color 5, 0
1320 Debug.Print "                           RESULTATS"
1330 Debug.Print "                           ---------"
1340 V = 1
1350 Debug.Print: Debug.Print: ' Color 6, 0
1360 For i = 1 To NMOB
1370 Debug.Print " PUISSANCE CONSOMMEE DU MOBILE "; V; "               = "; PC(V); " kW"
1380 Debug.Print
1390 Debug.Print " DEBIT DU MOBILE D'AGITATION  "; V; "               = "; Q(V); " m3/H"
1400 Debug.Print
1410 V = V + 1
1420 Next
1430 'Color 2, 0
1440 Debug.Print " PUISSANCE TOTALE CONSOMMEE                      = "; SPC0; " kW"
1450 SPI = SPC0 / 0.8
1460 Debug.Print
1470 Debug.Print " PUISSANCE A INSTALLER"
1480 Debug.Print " Compte tenu d'un rendement de O.8               = "; SPI; " kW"
1490 Debug.Print
1500 Debug.Print " VITESSE DE REMONTEE"
1510 Debug.Print " Calculee avec le mobile le plus grand           = "; K; " m/mn"
1520 Debug.Print
1530 REYN = VN / 60 * MV * 1000 * DX ^ 2 / VISCO / 1000
1540 If VISCO <> O Then Debug.Print " NOMBRE DE REYNOLDS                              = "; REYN
1550 Debug.Print: Debug.Print: 'Color 4, 0
1560 Debug.Print " POUR CONTINUER TAPEZ "; RET; "     POUR MODIFIER TAPEZ M"
1570 InputBox "", y: If y = "M" Then GoSub 530: GoTo 1210 Else GoTo 5960
1580 'CLS
1590 Rem ----------------------------------------------------------------------
1600 Debug.Print: Debug.Print: Debug.Print: 'Color 6, 0
1610 Debug.Print "         CALCULS RELATIFS A LA SECTION D'ARBRE DE L'AGITATEUR"
1620 Debug.Print "                 (Arbre d'agitation ou arbre r‚ducteur)"
1630 Debug.Print: Debug.Print: 'Color 3, 0
1640 Dim L1, L2, E1, D1, E2, D2, EPTUBE As Integer: L1 = InputBox(" LONGUEUR DE L'ARBRE ENCASTRE                  ")
1645 If L1 = 0 Then GoTo 1580
1650 Debug.Print
1660 L2 = InputBox(" LONGUEUR DE L'ARBRE D'AGITATION               ")
1670 Debug.Print
1680 E1 = InputBox(" MODULE D' ELASTICITE DE L'ARBRE ENCASTRE      ")
1690 Debug.Print
1700 D1 = InputBox(" DIAMETRE DE L'ARBRE ENCASTRE                  ")
1710 Debug.Print
1720 E2 = InputBox(" MODULE D' ELASTICITE DE L'ARBRE D' AGITATION  ")
1730 Debug.Print
1740 D2 = InputBox(" DIAMETRE DE L'ARBRE D'AGITATION               ")
1750 Debug.Print
1760 EPTUBE = InputBox(" EPAISSEUR DE L'ARBRE D'AGITATION              ")
1770 Debug.Print
1780 I1 = Pi * D1 ^ 4 / 64
1790 If EPTUBE = 0 Then I2 = Pi * D2 ^ 4 / 64
1800 If EPTUBE <> 0 Then I2 = Pi * (D2 ^ 4 - (D2 - EPTUBE * 2) ^ 4) / 64
1810 For i = 1 To NMOB
1820 Debug.Print " POSITION DU MOBILE REP "; i; " EN MM"
1830 Dim POSMOB: InputBox " Par rapport au palier inferieur de tete de commande:", POSMOB(i)
1840 Next
1850 Debug.Print: INC = InputBox(" INCREMENT POUR LE CALCUL DES FLECHES")
1860 Dim MOTORT() ': 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 i = 1 To NMOB
1920 For X = 0 To L1 + L2 - INC Step INC
1930 If X > L1 + POSMOB(i) Then MOTORT(Int(X / INC)) = MOTORT(Int(X / INC)) - CN(i)
1940 Next
1950 MOTORT(Int((L1 + L2) / INC)) = MOTORT(Int((L1 + L2) / INC)) - CN(i)
1960 Next
1970 Dim FLECHE '(Int((L1 + L2) / INC) + 2)
1980 Dim MOFLEX() '(Int((L1 + L2) / INC) + 2)
1990 For i = 1 To NMOB
2000 RA = FR(i) * POSMOB(i) / L1
2010 TRA = TRA + RA
2020 RB = FR(i) * (POSMOB(i) + L1) / L1
2030 TRB = TRB + RB
2040 LF = POSMOB(i)
2050 GoSub 2260
2060 X = L1 + L2: FC = F + (L2 - LF) * Sin(PHIC)
2070 FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + FC
2080 Debug.Print
2090 Debug.Print "fleche due en C au mobile "; i; " ="; FC
2100 Next
2110 FC = FLECHE(Int((L1 + L2) / INC))
2120 K1 = 2 * E2 * I2 / 6 / E1 / I1 * L1 * L2 - 0.5 * L1 * (2 * L2 + L1)
2130 K2 = -0.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 Debug.Print
2170 Debug.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 Debug.Print
2250 GoTo 2620
2260 C1 = -1 / 6 * RA * L1 ^ 2
2270 C3 = E2 * I2 * 2 / 6 / E1 / I1 * RA * L1 ^ 2 - 0.5 * (RA + RB) * L1 ^ 2
2280 C4 = -C3 * L1 - 0.5 * L1 ^ 3 * RB - 1 / 6 * (RA - RB) * L1 ^ 3
2290 PHIC = 1 / E2 / I2 * (0.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 + 0.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 + 0.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
2380 Rem *** PROCEDURE MENU ***
2390 FLECHE = 1
2400 NAF = 1
2410 Dim CHOIX: While CHOIX(NAF) <> ""
2420 'LOCATE YMENU + NAF, XMENU
2430 If NAF = FLECHE Then Debug.Print Chr$(205); Chr$(205); Chr$(62);
2440 If NAF <> FLECHE Then Debug.Print "   ";
2450 Debug.Print CHOIX(NAF)
2460 NAF = NAF + 1
2470 Wend
2480 For NAF = FLECHE - 1 To FLECHE + 1
2500 'LOCATE YMENU + NAF, XMENU
2510 If NAF = FLECHE Then Debug.Print Chr$(205); Chr$(205); Chr$(62)
2520 If NAF <> FLECHE Then Debug.Print "   "
2540 Next
2550 CLE$ = INKEY$: If CLE$ = "" Then GoTo 2550
2560 If CLE$ = Chr$(13) Then CHOIX = FLECHE: Return
2570 If CLE$ = Chr$(0) + Chr$(72) Or CLE$ = Chr$(56) Then FLECHE = FLECHE - 1
2580 If CLE$ = Chr$(0) + Chr$(80) Or CLE$ = Chr$(50) Then FLECHE = FLECHE + 1
2590 'If FLECHE = 0 Then LOCATE 1, 1: Debug.Print Chr$(7): FLECHE = 1: GoTo 2480
2600 'If CHOIX(FLECHE) = "" Then LOCATE 1, 1: Debug.Print Chr$(7): FLECHE = FLECHE - 1: GoTo 2480
2610 GoTo 2480
2620 Rem *** DIAGRAMMES ***
2630 'SCREEN 2, 1, 0, 0
2640 ECHHOR = 620 / (L1 + L2)
2650 ECHVER1 = -50 / FLECHE(Int((L1 + L2 / 3 * 2) / INC))
2660 ECHVER2 = 30 / MOFLEX(Int((L1) / INC))
2670 ECHVER3 = -30 / SCN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'2680 Line (10, 0)-(10, 199)
'2690 Line (10 + L1 * ECHHOR, 0)-(10 + L1 * ECHHOR, 199)
'2700 Line (10 + (L1 + L2) * ECHHOR, 0)-(10 + (L1 + L2) * ECHHOR, 199)
'2710 Line (8, 60)-(10 + (L1 + L2) * ECHHOR + 2, 60)
'2720 Line (8, 120)-(10 + (L1 + L2) * ECHHOR + 2, 120)
'2730 Line (8, 190)-(10 + (L1 + L2) * ECHHOR + 2, 190)
'2740 LOCATE 3, 1:
Debug.Print "f"
'2750 LOCATE 12, 1:
Debug.Print "Mf"
'2760 LOCATE 20, 1:
Debug.Print "Mt"
2770 For X = 0 To L1 + L2 - INC Step INC
'2780 PSet (10 + X * ECHHOR, 60 + FLECHE(Int(X / INC)) * ECHVER1)
'2790 PSet (10 + X * ECHHOR, 120 + MOFLEX(Int(X / INC)) * ECHVER2)
'2800 PSet (10 + X * ECHHOR, 190 + MOTORT(Int(X / INC)) * ECHVER3)
2810 Next
2820 CLE$ = INKEY$: If CLE$ = "" Then GoTo 2820
2830 'SCREEN 0, 1, 0, 0
2840 Z = 0
2850 'CLS:  Color 6, 0
2860 Z = Z + 1
2870 Debug.Print "                                ATTENTION !"
2880 Debug.Print
2890 'Color 2, 0
2900 Debug.Print " CE CALCUL EST FAUX SI LES INERTIES REELLES S' ECARTENT TROP DES INERTIES AYANT  PERMIS LE CALCUL DE LA DEFORMEE: DANS CETTE EVENTUALITE FAIRE UN SECOND CALCUL"
2910 Debug.Print: Debug.Print
2920 'Color 3, 0:
Debug.Print " L' ORIGINE EST PRISE AU ROULEMENT SUPERIEUR"
'2930 Color 2, 0:
Debug.Print: Debug.Print
2940 Debug.Print "REACTION EN A: (X=0)"; Tab(40); TRA; " N"
2950 Debug.Print "REACTION EN B: (X="; L1; ")"; Tab(40); TRB; " N"
2960 Debug.Print "REACTION EN C: (X="; L1 + L2; ")"; Tab(40); RC; " N"
2970 Debug.Print
2980 'Color 3, 0
2990 Dim XC: XC(Z) = InputBox("DISTANCE A L' ORIGINE (X=0) DE LA SECTION A CALCULER: ")
3000 Dim SEC: SEC(Z) = InputBox("REPERE DE LA SECTION:")
3010 X = 0
3020 If X + INC <= XC(Z) Then X = X + INC: GoTo 3020
3030 Dim MF: MF(Z) = Abs((XC(Z) - X) / (INC) * (MOFLEX(Int((X + INC) / INC)) - MOFLEX(Int(X / INC))) + MOFLEX(Int(X / INC))) / 1000
3040 Dim MT: MT(Z) = (XC(Z) - X) / (INC) * (MOTORT(Int((X + INC) / INC)) - MOTORT(Int(X / INC))) + MOTORT(Int(X / INC))
3050 Dim FCA: FCA(Z) = (XC(Z) - X) / (INC) * (FLECHE(Int((X + INC) / INC)) - FLECHE(Int(X / INC))) + FLECHE(Int(X / INC))
3060 Debug.Print: Debug.Print
3070 Debug.Print " FLECHE AU DROIT DE LA SECTION CONSIDEREE            ", FCA(Z); " mm"
3080 Debug.Print
3090 Debug.Print " MOMENT DE FLEXION DANS LA SECTION CONSIDEREE        ", MF(Z); " N.m"
3100 Debug.Print
3110 Debug.Print " MOMENT DE TORSION DANS LA SECTION CONSIDEREE        ", MT(Z); " N.m"
3120 Debug.Print: Debug.Print
3130 MTI = Sqr(MF(Z) ^ 2 + MT(Z) ^ 2)
3140 Debug.Print " MOMENT IDEAL DE TORSION =", MTI; " N.m"
3150 Debug.Print: 'Color 4, 0
3160 Debug.Print "             POUR CONTINUER TAPEZ  "; RET;
3170 InputBox "", y
3180 'CLS
3190 Debug.Print: Debug.Print: 'Color 6, 0
3200 Debug.Print "      DETERMINATION DU DIAMETRE D'ARBRE NECESSAIRE --------------- 1"
3210 Debug.Print: Debug.Print
3220 Debug.Print "      CONTRAINTE DE L'ARBRE CONNAISSANT SA SECTION --------------- 2"
3230 Debug.Print: Debug.Print: Debug.Print: 'Color 4, 0
3240 InputBox "                      VOTRE CHOIX ----------- ", CHO
3250 On CHO GoTo 3260, 3670
3260 'CLS
3270 Rem ------------------ Calcul du diametre d'arbre n‚cessaire ------------
3280 Debug.Print: Debug.Print: Debug.Print: 'Color 6, 0
3290 Dim T: InputBox " CONTRAINTE ADMISSIBLLE SUR LA SECTION A CALCULER  N/mm2  = ", T(Z)
3300 Dim IOV: IOV(Z) = MTI / T(Z)
3310 D1(Z) = (16 * IOV(Z) / Pi) ^ (1 / 3) * 10
3320 Debug.Print: 'Color 2, 0
3330 Debug.Print " MODULE DE TORSION DE LA SECTION NECESSAIRE               = "; IOV(Z)
3340 Debug.Print
3350 Debug.Print " DIAMETRE D'ARBRE MASSIF NECESSAIRE en mm                 = "; D1(Z)
3360 Debug.Print
3370 Debug.Print: 'Color 5, 0
3380 Debug.Print " PAGE SUIVANTE TABLEAU DES DIAMETRES D'ARBRE TUBULAIRE"
3390 Debug.Print: Debug.Print: 'Color 3, 0
3400 Debug.Print " POUR CONTINUER TAPEZ "; RET;
3410 InputBox "", y
3420 'CLS
3430 Debug.Print " TABLEAU DES DIAMETRES D'ARBRE TUBULAIRE A UTILISER DE PREFERENCE"
3440 Debug.Print: 'Color 4, 0
3450 Debug.Print "   DIAMETRE    POUCE     EPAISSEUR     POIDS      SCHED      Io/V"
3460 Debug.Print "                                       (au m)"
3470 'Color 6, 0
3480 Debug.Print "     73.0        2 1/2      5.16        8.63       40        34.87"
3490 Debug.Print "     73.0        2 1/2      7.01       11.40       80        43.84"
3500 Debug.Print "     88.9        3          5.49       11.43       40        56.54"
3510 Debug.Print "     88.9        3          8.00       15.30       80        75.58"
3520 Debug.Print "    101.6        3 1/2      5.74       13.60       40        78.45"
3530 Debug.Print "    101.6        3 1/2      8.80       20.10       80       109.71"
3540 Debug.Print "    114.3        4          5.90       16.10       40       103.59"
3550 Debug.Print "    114.3        4          8.56       22.30       80       139.99"
3560 Debug.Print "    141.3        5          6.55       21.80       40       178.58"
3570 Debug.Print "    141.3        5          9.52       30.90       80       243.46"
3580 Debug.Print "    168.3        6          7.11       28.30       40       278.46"
3590 Debug.Print "    168.3        6         10.97       42.60       80       400.67"
3600 Debug.Print "    219.1        8          8.18       42.50       40       551.11"
3610 Debug.Print "    219.1        8         12.70       64.60       80       803.62"
3620 Debug.Print "    273.0       10          9.27       60.30       40       979.61"
3630 Debug.Print "    273.0       10         14.20       90.60       80      1420.51"
3640 Debug.Print: 'Color 3, 0
3650 Debug.Print "POUR CONTINUER TAPEZ   "; RET;
3660 InputBox "", y
3670 'CLS
3680 Rem --------------------- Calcul de la contrainte de l'arbre ------------
3690 Debug.Print: Debug.Print: Debug.Print: 'Color 6, 0
3700 Debug.Print "           CARACTERISTIQUES DE L'ARBRE A CALCULER"
3710 Debug.Print: Debug.Print: Debug.Print: 'Color 2, 0
3720 Debug.Print "                  ARBRE MASSIF --------- 1"
3730 Debug.Print
3740 Debug.Print "                  ARBRE TUBULAIRE ------ 2"
3750 Debug.Print: Debug.Print: Debug.Print
3760 InputBox "                  VOTRE CHOIX ---------- ", CH
3770 On CH GoTo 3780, 3840
3780 'CLS
3790 Debug.Print: Debug.Print: Debug.Print
3800 InputBox " DIAMETRE DE L'ARBRE en mm                = ", D1(Z)
3810 IOV(Z) = (Pi * D1(Z) ^ 3) / (16 * 10 ^ 3)
3820 Dim ISV: ISV(Z) = (Pi * D1(Z) ^ 3) / (32 * 10 ^ 3)
3830 GoTo 3920
3840 'CLS
3850 Debug.Print: Debug.Print: Debug.Print
3860 InputBox " DIAMETRE DE L'ARBRE TUBULAIRE  en mm      = ", DT(Z)
3870 Debug.Print
3880 Dim EP: InputBox " EPAISSEUR DE L'ARBRE  en mm               = ", EP(Z)
3890 DI = DT(Z) - (2 * EP(Z))
3900 IOV(Z) = Pi * (DT(Z) ^ 4 - DI ^ 4) / (16 * DT(Z) * 10 ^ 3)
3910 ISV(Z) = Pi * (DT(Z) ^ 4 - DI ^ 4) / (32 * DT(Z) * 10 ^ 3)
3920 Debug.Print
3930 Debug.Print " MODULE DE FLEXION : I/V en cm3           = "; ISV(Z)
3940 Debug.Print " MODULE DE TORSION : Io/V en cm3          = "; IOV(Z)
3950 Debug.Print
3960 Debug.Print " CONTRAINTE NORMALE : "; Chr$(229); " en MPa            = "; MF(Z) / ISV(Z)
3970 Debug.Print " CONTRAINTE TANGENTIELLE : "; Chr$(231); " en MPa       = "; MT(Z) / IOV(Z)
3980 Debug.Print
3990 Debug.Print
4000 T(Z) = Sqr((MF(Z) / ISV(Z)) ^ 2 + 3 * (MT(Z) / IOV(Z)) ^ 2)
4010 Debug.Print " CRITERE DE VON MISES : "; Chr$(229); "e en MPa         ="; T(Z)
4020 Debug.Print
4030 Dim NOMAT: If Z = 1 Then NOMAT(Z) = InputBox(" DESIGNATION DU MATERIAU ")
4040 If Z <> 1 Then NOMAT(Z) = InputBox(" DESIGNATION DU MATERIAU (SI DIFFERENT DU PRECEDENT):")
4050 If Z <> 1 And NOMAT(Z) = "" Then NOMAT(Z) = NOMAT(Z - 1)
4060 Dim REMAT: If Z = 1 Then REMAT(Z) = InputBox(" LIMITE ELASTIQUE en MPa : ")
4070 If Z <> 1 Then REMAT(Z) = InputBox(" LIMITE ELASTIQUE (SI MATERIAU DIFFERENT DU PRECEDENT) en MPa :")
4080 If Z <> 1 And REMAT(Z) = 0 Then REMAT(Z) = REMAT(Z - 1)
4090 Dim CFMAT: If Z = 1 Then CFMAT(Z) = InputBox(" COEF. DE SECURITE : ")
4100 If Z <> 1 Then CFMAT(Z) = InputBox(" COEF. DE SECURITE (SI DIFFERENT DU PRECEDENT):")
4110 If Z <> 1 And CFMAT(Z) = 0 Then CFMAT(Z) = CFMAT(Z - 1)
4120 Debug.Print: 'Color 4, 0
4130 If T(Z) < REMAT(Z) / CFMAT(Z) Then Debug.Print "     "; Chr$(229); "e="; Round(T(Z)); "MPa < Re/s="; REMAT(Z) / CFMAT(Z); "MPa  DONC ADMISSIBLE"
4140 If T(Z) > REMAT(Z) / CFMAT(Z) Then Debug.Print " ATTENTION ! DEPASSEMENT DE LA CONTRAINTE ADMISSIBLE"
4150 Debug.Print: Debug.Print: 'Color 3, 0
4160 Debug.Print " POUR CONTINUER TAPEZ  "; RET;
4170 InputBox "", y
4180 'CLS
4190 Debug.Print: Debug.Print: Debug.Print: 'Color 6, 0
4200  InputBox " CALCUL D' UNE AUTRE SECTION ? (O/N) ", CH
4210  If CH = "O" Or CH = "o" Then GoTo 2850
4220  If CH = "N" Or CH = "n" Then NS = Z: GoTo 5960
4230  GoTo 4200
4240 'CLS
4250 Debug.Print: Debug.Print
4260 'Color 22:
Debug.Print "          VERIFIEZ LA MISE EN MARCHE DE L'IMPRIMANTE ": 'Color 4, 0
4270 Debug.Print "           ----------------------------------------"
4280 Debug.Print: Debug.Print
4290 'Color 7, 0
4300 Debug.Print "   VERIFIEZ LA MISE EN PAGE DE L'IMPRIMANTE (Voir procedure)"
4310 Debug.Print: Debug.Print: Debug.Print: 'Color 2, 0
4320 Debug.Print "   QUAND PRET TAPEZ SUR   "; RET;
4330 InputBox "", y
4340 Debug.Print
4345 InputBox "EDITION COMPLETE (NOTE DE CALCUL) OU SIMPLIFIEE (PROJET)? (C/S) ", MODEDIT$
4346 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 4360
4347 If MODEDIT$ <> "C" And MODEDIT$ <> "c" Then Debug.Print "REPONDRE PAR C OU S !": GoTo 4345
4348 Debug.Print
4350 Page = InputBox("Nø DE LA PREMIERE PAGE:")
4360 Rem _____________________________________________________
4370 'CLS
4380 Debug.Print: Debug.Print: Debug.Print: 'Color 5, 0
4390 Debug.Print "                SORTIE SUR IMPRIMANTE"
4400 Debug.Print: Debug.Print: 'Color 6, 0
4410 Debug.Print "          NOM DU PROGRAMME EN COURS  ( POWERP )"
4415 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 4430
4420 GoSub 6950
4430 Debug.Print Chr$(14);
4460 Debug.Print Chr$(27); "E"; " CALCUL DE LA PUISSANCE A INSTALLER ET VERIFICATION DE LA LIGNE D'ARBRE"
4470 Debug.Print Tab(14); "DANS LE CAS D'UN MONTAGE AVEC PALIER DE FOND DE CUVE"
4480 Debug.Print:  Debug.Print: Debug.Print
4490 If DAT = "" Then GoTo 4510
4500 Debug.Print "  DATE            : "; DAT
4510 If PLAN = "" Then GoTo 4530
4520 Debug.Print "  PLAN            : "; PLAN
4530 If REF = "" Then GoTo 4550
4540 Debug.Print "  REFERENCE       : "; REF
4550 If CLIENT = "" Then GoTo 4570
4560 Debug.Print "  NOM DU CLIENT   : "; CLIENT
4570 If REP = "" Then GoTo 4590
4580 Debug.Print "  REPERE APPAREIL : "; REP
4590 Debug.Print:  Debug.Print: Debug.Print
4600 Debug.Print Chr$(27); Chr$(45); Chr$(1);
4610 Debug.Print "  CARACTERISTIQUES DE L'AGITATEUR"
4620 Debug.Print Chr$(27); Chr$(45); Chr$(0)
4630 Debug.Print "  VITESSE DE ROTATION    (tr/mn) "; Tab(50); VN
4640 Debug.Print "  DENSITE DU MELANGE             "; Tab(50); MV
4642 Debug.Print "  VISCOSITE DU MELANGE   (mPa.s) "; Tab(50); VISCO
4645 Debug.Print "  TEMPERATURE DE CALCUL  (øC)    "; Tab(50); DT
4650 Debug.Print "  DIAMETRE DE LA CUVE    (mm)    "; Tab(50); DC
4660 Debug.Print "  NOMBRE DE MOBILES D'AGITATION "; Tab(50); NMOB
4670 Debug.Print
4680 V = 1
4690 For i = 1 To NMOB
4700 Debug.Print Chr$(27); Chr$(45); Chr$(1);
4710 Debug.Print "  CARACTERISTIQUES DU MOBILE D'AGITATION  "; V
4720 Debug.Print Chr$(27); Chr$(45); Chr$(0)
4730 Debug.Print "  DIAMETRE DU MOBILE  (mm) "; Tab(50); D(V)
4740 If PH(V) = 0 Then GoTo 4770
4750 Debug.Print "  PAS DU MOBILE       (mm)  "; Tab(50); PH(V)
4760 GoTo 4775
4770 Debug.Print "  INCLINAISON DES PALES (degres)"; Tab(50); ALP(V)
4775 If L1 <> 0 Then Debug.Print "  POSITION DU MOBILE   (mm) "; Tab(50); POSMOB(V)
4780 Debug.Print "  NOMBRE DE PUISSANCE  "; Tab(50); NP(V)
4790 Debug.Print "  COEFFICIENT DE DESEQUILIBRE "; Tab(50); R(V)
4800 Debug.Print "  FACTEUR DE CORRECTION DE PUISSANCE "; Tab(50); FC(V)
4810 Debug.Print "  PUISSANCE CONSOMMEE  (kW)"; Tab(50); FNROUND(PC(V))
4820 Debug.Print "  COUPLE DE TORSION    (N.m) "; Tab(50); FNROUND(CN(V))
4830 Debug.Print "  EFFORT RADIAL HYDRAULIQUE (N)"; Tab(50); FNROUND(FR(V))
4840 Debug.Print "  NOMBRE DE DEBIT "; Tab(50); NQ(V)
4850 Debug.Print "  DEBIT DU MOBILE  (m3/mn) "; Tab(50); FNROUND(Q(V) / 60)
4860 Debug.Print
4865 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 4880
4870 If V = 3 Or V = 7 Then Debug.Print Chr$(12): GoSub 6950
4880 V = V + 1
4890 Next
4895 If L1 = 0 Then GoTo 5015
4900 Debug.Print Chr$(27); Chr$(45); Chr$(1);
4910 Debug.Print "  CARACTERISTIQUES DE LA LIGNE D' ARBRE"
4920 Debug.Print Chr$(27); Chr$(45); Chr$(0)
4930 Debug.Print
4940 Debug.Print "  LONGUEUR DE L' ARBRE SUPERIEUR (mm)"; Tab(50); L1
4950 Debug.Print "  DIAMETRE DE L' ARBRE SUPERIEUR (mm)"; Tab(50); D1
4960 Debug.Print "  MODULE D' ELASTICITE DE L' ARBRE SUPERIEUR(MPa)"; Tab(50); E1
4970 Debug.Print
4980 Debug.Print "  LONGUEUR DE L' ARBRE D' AGITATION   (mm)"; Tab(50); L2
4990 Debug.Print "  DIAMETRE DE L' ARBRE D' AGITATION   (mm)"; Tab(50); D2
5000 If EPTUBE <> 0 Then Debug.Print "  EPAISSEUR DE L' ARBRE D' AGITATION (mm)"; Tab(50); EPTUBE
5010 Debug.Print "  MODULE D'ELASTICITE DE L'ARBRE D'AGITATION(MPa)"; Tab(50); E2
5015 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then Debug.Print: Debug.Print: Debug.Print: GoTo 5030
5020 If NMOB = 2 Or NMOB = 6 Then Debug.Print Chr$(12): GoSub 6950 Else Debug.Print: Debug.Print: Debug.Print
5030 Debug.Print Chr$(27); Chr$(45); Chr$(1);
5040 Debug.Print "  RESULTATS"
5050 Debug.Print Chr$(27); Chr$(45); Chr$(0)
5060 Debug.Print
5070 Debug.Print "  PUISSANCE TOTALE CONSOMMEE    (kW)"; Tab(50); FNROUND(SPC0)
5080 Debug.Print "  PUISSANCE A INSTALLER         (kW)"
5090 Debug.Print "  Compte tenu d'un rendemment de 0.8"; Tab(50); FNROUND(SPI)
5100 Debug.Print "  VITESSE DE REMONTEE           (m/mn)"
5110 Debug.Print "  Du plus grand mobile d'agitation"; Tab(50); FNROUND(K)
5120 Debug.Print "  COUPLE DE TORSION TOTAL       (N.m)"; Tab(50); FNROUND(SCN)
5130 Debug.Print "  SOMME DES EFFORTS RADIAUX     (N)"; Tab(50); FNROUND(SFR)
5140 Debug.Print "  DEBIT TOTAL                   (m3/mn)"; Tab(50); FNROUND(SQY)
5143 Debug.Print
5145 If L1 = 0 Then GoTo 5180
5150 Debug.Print "  REACTION SUR LE ROULEMENT SUPERIEUR     (N)"; Tab(50); FNROUND(TRA)
5160 Debug.Print "  REACTION SUR LE ROULEMENT INTERMEDIAIRE (N)"; Tab(50); FNROUND(TRB)
5170 Debug.Print "  REACTION SUR LE PALIER DE FOND DE CUVE  (N)"; Tab(50); FNROUND(RC)
5180 Debug.Print
5185 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 5200
5190 If NMOB = 1 Or NMOB = 5 Then Debug.Print Chr$(12): GoSub 6950 Else Debug.Print: Debug.Print
5200 Debug.Print Chr$(27); Chr$(45); Chr$(1);
5210 Debug.Print "  REGIME D' ECOULEMENT:"
5220 Debug.Print Chr$(27); Chr$(45); Chr$(0)
5225 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 5330
5230 Debug.Print
5240 Debug.Print Tab(25); X3$; String$(27, X1$); X4$
5250 Debug.Print Tab(25); X2$; "           "; Chr$(235); " . V . D"; Chr$(253); "      "; X2$
5260 Debug.Print Tab(25); X2$; "     Re = "; String$(11, X1$); "      "; X2$
5270 Debug.Print Tab(25); X2$; "               n           "; X2$
5280 Debug.Print Tab(25); X5$; String$(27, X1$); X6$
5290 Debug.Print Tab(25); Chr$(235); " : MASSE VOLUMIQUE en  kg/m3"
5300 Debug.Print Tab(25); "V : VITESSE en   tr/s"
5310 Debug.Print Tab(25); "D : DIAMETRE DU MOBILE en  m"
5320 Debug.Print Tab(25); "n : VISCOSITE en  daPo"
5330 Debug.Print
5340 Debug.Print Tab(10); " VALEUR DU NOMBRE DE REYNOLDS: Re="; FNROUND(REYN)
5350 Debug.Print
5360 If REYN < 10 Then Debug.Print Tab(10); " Re<10 : REGINE LAMINAIRE"
5370 If REYN > 10 ^ 4 Then Debug.Print Tab(10); " Re>10000 : REGIME TURBULENT"
5380 If REYN > 10 And REYN < 10 ^ 4 Then Debug.Print Tab(10); " 10<Re<10000 : REGIME INTERMEDIAIRE"
5382 Debug.Print:  Debug.Print
5383 Debug.Print
5384 Debug.Print
5385 Debug.Print
5390 Debug.Print:  Debug.Print
5394 If L1 = 0 Then Debug.Print Chr$(12): GoTo 5960
5395 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 5410
5400 Debug.Print Chr$(12): GoSub 6950
5410 Debug.Print Chr$(14); Chr$(27); "E"; "  CALCULS DES CONTRAINTES DANS L'ARBRE"
5420 Debug.Print
5430 Z = 1
5440 For i = 1 To NS
5450 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then Debug.Print: Debug.Print Else Debug.Print String$(5, Chr$(13))
5460 Debug.Print Chr$(27); Chr$(45); Chr$(1);
5470 Debug.Print "  CALCUL DE LA SECTION D'ARBRE : "; SEC(Z)
5480 Debug.Print Chr$(27); Chr$(45); Chr$(0)
5490 V = 1
5500 Debug.Print "  POSITION PAR RAPPORT AU ROULEMENT SUPERIEUR(mm)"; Tab(50); XC(Z)
5510 Debug.Print
5520 Debug.Print "  FLECHE AU DROIT DE CETTE SECTION (mm)"; Tab(50); Abs(Int(FCA(Z) * 1000 + 0.5) / 1000)
5530 Debug.Print
5540 Debug.Print "  MOMENT DE FLEXION DANS CETTE SECTION (N.m)"; Tab(50); FNROUND(MF(Z))
5550 Debug.Print "  MOMENT DE TORSION DANS CETTE SECTION (N.m)"; Tab(50); FNROUND(MT(Z))
5560 Debug.Print Chr$(27); Chr$(45); Chr$(1);
5570 Debug.Print:  Debug.Print "  CARACTERISTIQUES DE CETTE SECTION :"
5580 Debug.Print Chr$(27); Chr$(45); Chr$(0)
5590 If DT(Z) > 0 Then GoTo 5620
5600 Debug.Print "  DIAMETRE ARBRE MASSIF UTILISE (mm)"; Tab(50); D1(Z)
5610 GoTo 5640
5620 Debug.Print "  DIAMETRE ARBRE TUBULAIRE UTILISE (mm)"; Tab(50); DT(Z)
5630 Debug.Print "  EPAISSEUR DE L'ARBRE  (mm)"; Tab(50); EP(Z)
5640 Debug.Print
5645 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 5690
5650 Debug.Print "  MATIERE : "; NOMAT(Z)
5660 Debug.Print "  LIMITE ELASTIQUE A LA TEMPERATURE DE CALCUL Re="; Tab(50); REMAT(Z)
5670 Debug.Print "  Coefficient de s‚curit‚ dans cette section: s="; Tab(50); CFMAT(Z)
5680 Debug.Print
5690 Debug.Print "  MODULE DE FLEXION (cm3)"; Tab(50); FNROUND(ISV(Z))
5700 Debug.Print "  MODULE DE TORSION (cm3)"; Tab(50); FNROUND(IOV(Z))
5710 Debug.Print
5720 Debug.Print "  CONTRAINTE NORMALE "; Chr$(229); " (MPa)"; Tab(50); FNROUND(MF(Z) / ISV(Z))
5730 Debug.Print "  CONTRAINTE TANGENTIELLE "; Chr$(231); " (MPa)"; Tab(50); FNROUND(MT(Z) / IOV(Z))
5735 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then GoTo 5900
5740 Debug.Print String$(5, Chr$(13))
5750 Debug.Print Chr$(27); Chr$(45); Chr$(1);
5760 Debug.Print "  CONTRAINTE DE VON MISES "; Chr$(229); "e :"
5770 Debug.Print Chr$(27); Chr$(45); Chr$(0)
5780 Debug.Print Tab(25); X3$; String$(27, X1$); X4$
5790 Debug.Print Tab(25); X2$; "                      "; Chr$(171); "    "; X2$
5800 Debug.Print Tab(25); X2$; "    "; Chr$(229); "e = ( "; Chr$(229); Chr$(253); " + 3."; Chr$(231); Chr$(253); " )     "; X2$
5810 Debug.Print Tab(25); X5$; String$(27, X1$); X6$
5820 Debug.Print Tab(25); " d' ou "; Chr$(229); "e = "; FNROUND(T(Z)); " MPa"
5830 Debug.Print String$(5, Chr$(13))
5840 Debug.Print Chr$(27); Chr$(45); Chr$(1);
5850 Debug.Print "  CONDITION DE RESISTANCE :"
5860 Debug.Print Chr$(27); Chr$(45); Chr$(0)
5870 Debug.Print Tab(30); X3$; String$(17, X1$); X4$
5880 Debug.Print Tab(30); X2$; "    "; Chr$(229); "e < Re/s    "; X2$
5890 Debug.Print Tab(30); X5$; String$(17, X1$); X6$
5900 Debug.Print
5905 If MODEDIT$ = "S" Or MODEDIT$ = "s" Then Debug.Print "  CONTRAINTE DE VON MISES (MPa)"; Tab(50); FNROUND(T(Z)): Debug.Print: Debug.Print: GoTo 5940
5910 If T(Z) < REMAT(Z) / CFMAT(Z) Then Debug.Print "  "; Chr$(229); "e="; FNROUND(T(Z)); " MPa < Contrainte admissible Re/s="; REMAT(Z) / CFMAT(Z); " MPa"
5920 If T(Z) > REMAT(Z) / CFMAT(Z) Then Debug.Print "  DEPASSEMENT DE LA CONTRAINTE ADMISSIBLE:": Debug.Print "  Contrainte admissible Re/s="; FNROUND(REMAT(Z) / CFMAT(Z)); "MPa < "; Chr$(229); "e="; FNROUND(T(Z)); " MPa"
5930 Debug.Print Chr$(12): If Z < NS Then GoSub 6950
5940 Z = Z + 1
5950 Next
5955 If (MODEDIT$ = "S" Or MODEDIT$ = "s") And Z = NS + 1 Then Debug.Print Chr$(12)
5960 Rem *** MENU ***
5970 'Color 6, 0
5980 'CLS
5990  XMENU = 25: YMENU = 10
6000  CHOIX(1) = "SORTIE SUR IMPRIMANTE": CHOIX(2) = "CALCUL DES CONTRAINTES": CHOIX(3) = "MODIFICATION DE L'AGITATION": CHOIX(4) = "NOUVEAU/FIN": CHOIX(5) = ""
6010  GoSub 2380
6020  'CLS
6030  On CHOIX GoTo 4240, 6200, 6300, 6940
6200 If INC > 0 Then Erase MOTORT: Erase MOFLEX: Erase FLECHE: TRA = 0: TRB = 0
6210 GoTo 1580
6300 If INC > 0 Then Erase MOTORT: Erase MOFLEX: Erase FLECHE: TRA = 0: TRB = 0
6310 GoTo 510
6940 Run
6950 Debug.Print Tab(8); "LUMPP S.A."
6960 Debug.Print Tab(65); "Page nø "; Page
6970 Page = Page + 1
6980 Debug.Print:  Debug.Print
6990 Return
7000 XMENU = 25: YMENU = 8
7010 CHOIX(1) = "****** AUTRE ******"
7020 CHOIX(2) = "HELICE  LA 3 PALES"
7030 CHOIX(3) = "HELICE  LB 3 PALES"
7040 CHOIX(4) = "HELICE MARINE 3 PALES"
7050 CHOIX(5) = "HELICE MARINE 4 PALES"
7060 CHOIX(6) = "HELICE  LC 3 PALES "
7070 CHOIX(7) = "HELICE DOUBLE FLUX"
7080 CHOIX(8) = ""
7090 'CLS
7100 'Color 2, 0
7110 'LOCATE 5, 33: Debug.Print "HELICES:"
7120 'Color 3, 0
7130 GoSub 7700
7140 If CHOIX = 1 Then GoTo 7230
7150 If CHOIX = 2 Then NP = 0.15: NQ = 0.34
7160 If CHOIX = 3 Then NP = 0.9: NQ = 0.86
7170 If CHOIX = 4 Then NP = 0.43: NQ = 0.55
7180 If CHOIX = 5 Then NP = 0.8: NQ = 0.6
7190 If CHOIX = 6 Then NP = 0.23: NQ = 0.65: ALP(V) = 30
7200 If CHOIX = 7 Then NP = 0.35: NQ = 0.58
7210 'CLS
7220 GoTo 7710
7230 CHOIX(1) = "****** AUTRE ******"
7240 CHOIX(2) = "TURBINE 4 PALES … 45ø"
7250 CHOIX(3) = "TURBINE 6 PALES … 45ø"
7260 CHOIX(4) = "TURBINE 2 PALES RADIALES"
7270 CHOIX(5) = "TURBINE 4 PALES RADIALES"
7280 CHOIX(6) = "TURBINE 6 PALES RADIALES"
7290 CHOIX(7) = "TURBINE RUSHTON"
7300 CHOIX(8) = ""
7310 'CLS
7320 'Color 2, 0
7330 'LOCATE 5, 33: Debug.Print "TURBINES:"
7340 'Color 3, 0
7350 GoSub 7700
7360 If CHOIX = 1 Then GoTo 7450
7370 If CHOIX = 2 Then NP = 1.5: NQ = 0.75: ALP(V) = 45
7380 If CHOIX = 3 Then NP = 2.2: NQ = 0.78: ALP(V) = 45
7390 If CHOIX = 4 Then NP = 4.25: NQ = 0.75: ALP(V) = 90
7400 If CHOIX = 5 Then NP = 6.1: NQ = 0.87: ALP(V) = 90
7410 If CHOIX = 6 Then NP = 6.4: NQ = 0.98: ALP(V) = 90
7420 If CHOIX = 7 Then NP = 5.4: NQ = 0.8: ALP(V) = 90
7430 'CLS
7440 GoTo 7710
7450 CHOIX(1) = "****** AUTRE ******"
7460 CHOIX(2) = "TURBINE DILACERATRICE"
7470 CHOIX(3) = "TURBINE 6 PALES COURBES"
7480 CHOIX(4) = "CADRE D' AGITATION"
7490 CHOIX(5) = "IMPELLER"
7500 CHOIX(6) = "HELICE A PALES CINTREES PROFIL LARGE"
7510 CHOIX(7) = "HELICE A PALES CINTREES PROFIL EVOLUTIF"
7520 CHOIX(8) = "HELICE A PALES MULTIPLANS"
7530 CHOIX(9) = "*** HORS STANDARD ***"
7540 CHOIX(10) = ""
7550 'CLS
7560 'Color 2, 0
7570 'LOCATE 5, 30: Debug.Print "AUTRES MOBILES:"
7580 'Color 3, 0
7590 GoSub 7700
7600 If CHOIX = 1 Then GoTo 7010
7610 If CHOIX = 2 Then NP = 1.25: NQ = 0.2
7620 If CHOIX = 3 Then NP = 3.2: NQ = 1.1: ALP(V) = 90
7630 If CHOIX = 4 Then NP = 1.9: NQ = 1
7640 If CHOIX = 5 Then NP = 0.49: NQ = 1
7650 If CHOIX = 6 Then NP = 1: NQ = 1
7660 If CHOIX = 7 Then NP = 1: NQ = 1
7670 If CHOIX = 8 Then NP = 1: NQ = 1
7680 'CLS
7690 GoTo 7710
7700 GoTo 2380: Rem *** ALLER AU MENU ***
7710 NP(V) = NP
7720 NQ(V) = NQ
7730 CH(V) = Left$(CHOIX(CHOIX), 1)
7740 If CH(V) <> "H" And CH(V) <> "T" Then CH(V) = ""
7750 If Left$(CHOIX(CHOIX), 13) = "HELICE MARINE" Then R(V) = 0.8: Return
7760 If Left$(CHOIX(CHOIX), 6) = "HELICE" Then R(V) = 0.7: Return
7770 R(V) = 1.2
7780 Return
10000 If Err = 5 Then Resume Next
10010 'CLS:  Debug.Print "ERREUR "; Err; " A LA LIGNE "; Erl
10020 End
End Sub
Au plaisir et a bientôt.
Fred.
 

jmps

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

J'avais pas dis qu'on touchait le fond ?

Le même code dans des cellules Excel c'est plus beau.
Ça marche pas plus mais c'est encadré.
Je suis désespéré aussi morest.
Tu ne veux toujours pas dire ce que tu veux faire.
Tant pis...
 

jmps

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

J'ai la réponse je crois...

Answer_to_Life.png
 

fhoest

XLDnaute Accro
Re : Convertir du Qbasic vers VBA

Il est vrai que cela serait plus beau dans les cellules Excel mais rien pour le fun j'avais envie de le coller comme ça.
On touche le fond c'est vrai mais une petite bulle d'espoir va nous faire remonter en surface....
A+
 

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Re,

Fhoest, tout d'abord je suis impressionné par tant de bonté :p. Si je comprends bien tu as remplacé toutes les fonctions qbasic par des fonctions vba?

En ce qui concerne ce que je veux faire, c'est assez simple à vrai dire. Je veux pouvoir sortir la science qui est dans ce logiciel en Qbasic à la noix :p et le transposer en excel/vba. La finalité sera bien evidemment un mix entre le vba et les fiches excel afin de calculer sans se prendre la tête avec le qbasic. En gros actuellement les utilisateurs de ce logiciel passe entre 1h et 2h pour faire un calcul complet. Ce temps est affreusement long surtout qu'au final il calcul pas grand chose avec ce logiciel simplement 2 informations. Avec un petit programme excel se sera plus facile pour eux et moins contraignant.

Les logiciels exclusivement en vba sont trop complexe pour ma petite personne et j'affectionne tout particulièrement le compromis très interessant et accessible que représente le vba associé à des fiches excel.

Merci une nouvelle fois pour l'attention dont vous porté à ce post.
 

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Re,

Bon j'ai approfondi le sujet. J'ai repris le code de ROGER et ai ajouté les parties manquantes avec des interaction avec la feuille excel pour stocké et enregistrer les valeurs.

On y est presque et je commence à sentir un sentiment de soulagement intense.

Voici en fichier joint le document excel et je colle le code quasiment terminé.

Code:
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((Range("D11") + Range("D12")) / INC) + 2)
  For X = 0 To Range("D11") + Range("D12") - INC Step INC
    MOTORT(Int(X / INC)) = SCN
  Next X
  MOTORT(Int((Range("D11") + Range("D12")) / INC)) = SCN
  For N = 1 To Range("D6")
    For X = 0 To Range("D11") + Range("D12") - INC Step INC
      If X > Range("D11") + Range("H8")(N) Then MOTORT(Int(X / INC)) = MOTORT(Int(X / INC)) - Range("H8")(N)
    Next X
    MOTORT(Int((Range("D11") + Range("D12")) / INC)) = MOTORT(Int((Range("D11") + Range("D12")) / INC)) - Range("H8")(N)
  Next N
  ReDim FLECHE(Int((Range("D11") + Range("D12")) / INC) + 2)
  ReDim MOFLEX(Int((Range("D11") + Range("D12")) / INC) + 2)
  For N = 1 To Range("D6")
    Range("D24") = Range("D20")(N) * Range("D15")(N) / Range("D11")
    TRA = TRA + Range("D24")
    Range("D25") = Range("D20")(N) * (Range("D15")(N) + Range("D11")) / Range("D11")
    TRB = TRB + Range("D25")
    Range("I11") = Range("D15")(N)
    GSB_2260
    X = Range("D11") + Range("D12")
    Range("G21") = Range("G22") + (Range("D12") - Range("I11")) * Sin(PHIC)
    FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + Range("G21")
    MsgBox "Flèche due en C au mobile " & N & "=" & Range("G21")
  Next N
  Range("G21") = FLECHE(Int((Range("D11") + Range("D12")) / INC))
  K1 = 2 * Range("D17") * Range("H7") / 6 / Range("D16") / Range("H6") * Range("D11") * Range("D12") - 0.5 * Range("D11") * (2 * Range("D12") + Range("D11"))
  K2 = -0.5 * Range("D11") ^ 2 * (Range("D11") + Range("D12")) + 1 / 6 * Range("D11") ^ 3
  K3 = 2 / 6 * (Range("D11") + Range("D12")) ^ 3 'Et pourquoi pas 2327 / 6981 * ( + ) ^ 3 ?
  Range("G35") = Range("D17") * Range("H7") * Range("G21") / (K3 + K2 + K1 * Range("D12"))
  MsgBox "valeur de la réaction en C annulant la flèche =" & Range("G35") & " N"
  Range("D24") = -Range("G35") * Range("D12") / Range("D11")
  TRA = TRA + Range("D24")
  Range("D25") = -Range("G35") * (Range("D12") + Range("D11")) / Range("D11")
  TRB = TRB + Range("D25")
  Range("I11") = Range("D12")
  GSB_2260
  X = Range("D11") + Range("D12")
  FLECHE(Int(X / INC)) = 0
'GoTo 2620 '?????????????????????????????
End Sub

Sub GSB_2260()
Dim X
  C1 = -1 / 6 * Range("D24") * Range("D11") ^ 2
  C3 = Range("D17") * Range("H7") * 2 / 6 / Range("D16") / Range("H6") * Range("D24") * Range("D11") ^ 2 - 0.5 * (Range("D24") + Range("D25")) * Range("D11") ^ 2
  C4 = -C3 * Range("D11") - 0.5 * Range("D11") ^ 3 * Range("D25") - 1 / 6 * (Range("D24") - Range("D25")) * Range("D11") ^ 3
  PHIC = 1 / Range("D17") / Range("H7") * (0.5 * (Range("D24") - Range("D25")) * (Range("D11") + Range("I11")) ^ 2 + Range("D11") * Range("D25") * (Range("D11") + Range("I11")) + C3)
  'THETAC = 360 * PHIC / 2 / Pi 'THETAC n'est utilisé nulle part…
 X = Range("D11") + Range("I11")
  Range("G22") = 1 / Range("D17") / Range("H7") * (1 / 6 * (Range("D24") - Range("D25")) * X ^ 3 + 0.5 * Range("D11") * Range("D25") * X ^ 2 + C3 * X + C4)
  For X = 0 To Range("D11") + Range("D12") - INC Step INC
    If X > Range("D11") And X <= Range("D11") + Range("I11") Then
      FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + 1 / Range("D17") / Range("H7") * (1 / 6 * (Range("D24") - Range("D25")) * X ^ 3 + 0.5 * Range("D11") * Range("D25") * X ^ 2 + C3 * X + C4)
      MOFLEX(Int(X / INC)) = MOFLEX(Int(X / INC)) + X * Range("D24") - (X - Range("D11")) * Range("D25")
    ElseIf X <= Range("D11") Then
      FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + Range("D24") / 6 / Range("D16") / Range("H6") * (X ^ 3 - Range("D11") ^ 2 * X)
      MOFLEX(Int(X / INC)) = MOFLEX(Int(X / INC)) + X * Range("D24")
    ElseIf X > Range("D11") + Range("I11") Then
      D = X - Range("D11") - Range("I11"): FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + Range("G22") + D * Sin(PHIC)
    End If
  Next X
End Sub


MsgBox " L' ORIGINE EST PRISE AU ROULEMENT SUPERIEUR"

MsgBox "REACTION EN A: " & TRA
MsgBox "REACTION EN B: " & TRB
MsgBox "REACTION EN C: " & Range("G35")

Range("G28")(Z) = InputBox("DISTANCE A L' ORIGINE (X=0) DE LA SECTION A CALCULER:")
SEC$(Z) = InputBox("REPERE DE LA SECTION:")
X = 0
'3020 If X + INC <= XC(Z) Then X = X + INC: GoTo 3020
Range("G25")(Z) = Abs((Range("G28")(Z) - X) / (INC) * (MOFLEX(Int((X + INC) / INC)) - MOFLEX(Int(X / INC))) + MOFLEX(Int(X / INC))) / 1000
Range("G26")(Z) = (Range("G28")(Z) - X) / (INC) * (MOTORT(Int((X + INC) / INC)) - MOTORT(Int(X / INC))) + MOTORT(Int(X / INC))
Range("G24")(Z) = (Range("G28")(Z) - X) / (INC) * (FLECHE(Int((X + INC) / INC)) - FLECHE(Int(X / INC))) + FLECHE(Int(X / INC))

MsgBox " FLECHE AU DROIT DE LA SECTION CONSIDEREE            " & Range("G24")(Z)

MsgBox " MOMENT DE FLEXION DANS LA SECTION CONSIDEREE        " & Range("G25")(Z)

MsgBox " MOMENT DE TORSION DANS LA SECTION CONSIDEREE        " & Range("G26")(Z)

Voilà, la ligne faisant appel à la même ligne est étrange je la comprends pas du tout. De même pour l'intervention de la variable Z quel est sont intérêt svp?
J'ai highlighé les cellule agissante car sinon c'est le boxon^^.

Dernier point je ne sais pas trop comment intégrer la dernière partie dans le global.
Merci d'avance.


EDIT 21h25 : J'ai ajouter la version modifiée. La valeur de G24, G25, G26 devrait être, pour XC = 1500 de :
0.1 pour G24
90.17 pour G25
et 998 pour G26

Les valeurs de TRA TRB et RC sont correctes.

On touche au but. Il doit y avoir un problème d'ordre de calcul entre les macro je pense. Je hais être aussi impuissant et nul :p mais bon c'est la vie^^
Code:
Sub GSB_2260()
Dim X
  C1 = -1 / 6 * Range("D24") * Range("D11") ^ 2
  C3 = Range("D17") * Range("H7") * 2 / 6 / Range("D16") / Range("H6") * Range("D24") * Range("D11") ^ 2 - 0.5 * (Range("D24") + Range("D25")) * Range("D11") ^ 2
  C4 = -C3 * Range("D11") - 0.5 * Range("D11") ^ 3 * Range("D25") - 1 / 6 * (Range("D24") - Range("D25")) * Range("D11") ^ 3
  PHIC = 1 / Range("D17") / Range("H7") * (0.5 * (Range("D24") - Range("D25")) * (Range("D11") + Range("I11")) ^ 2 + Range("D11") * Range("D25") * (Range("D11") + Range("I11")) + C3)
  'THETAC = 360 * PHIC / 2 / Pi 'THETAC n'est utilisé nulle part…
 X = Range("D11") + Range("I11")
  Range("G22") = 1 / Range("D17") / Range("H7") * (1 / 6 * (Range("D24") - Range("D25")) * X ^ 3 + 0.5 * Range("D11") * Range("D25") * X ^ 2 + C3 * X + C4)
  For X = 0 To Range("D11") + Range("D12") - INC Step INC
    If X > Range("D11") And X <= Range("D11") + Range("I11") Then
      FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + 1 / Range("D17") / Range("H7") * (1 / 6 * (Range("D24") - Range("D25")) * X ^ 3 + 0.5 * Range("D11") * Range("D25") * X ^ 2 + C3 * X + C4)
      MOFLEX(Int(X / INC)) = MOFLEX(Int(X / INC)) + X * Range("D24") - (X - Range("D11")) * Range("D25")
    ElseIf X <= Range("D11") Then
      FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + Range("D24") / 6 / Range("D16") / Range("H6") * (X ^ 3 - Range("D11") ^ 2 * X)
      MOFLEX(Int(X / INC)) = MOFLEX(Int(X / INC)) + X * Range("D24")
    ElseIf X > Range("D11") + Range("I11") Then
      D = X - Range("D11") - Range("I11"): FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + Range("G22") + D * Sin(PHIC)
    End If
  Next X
  Z = 0
  Z = Z + 1
MsgBox " L' ORIGINE EST PRISE AU ROULEMENT SUPERIEUR"

MsgBox "REACTION EN A: " & TRA
MsgBox "REACTION EN B: " & TRB
MsgBox "REACTION EN C: " & Range("G35")

Range("G28")(Z) = InputBox("DISTANCE A L' ORIGINE (X=0) DE LA SECTION A CALCULER:")

X = 0
 oki

Range("G25")(Z) = Abs((Range("G28")(Z) - X) / (INC) * (MOFLEX(Int((X + INC) / INC)) - MOFLEX(Int(X / INC))) + MOFLEX(Int(X / INC))) / 1000
Range("G26")(Z) = (Range("G28")(Z) - X) / (INC) * (MOTORT(Int((X + INC) / INC)) - MOTORT(Int(X / INC))) + MOTORT(Int(X / INC))
Range("G24")(Z) = (Range("G28")(Z) - X) / (INC) * (FLECHE(Int((X + INC) / INC)) - FLECHE(Int(X / INC))) + FLECHE(Int(X / INC))

MsgBox " FLECHE AU DROIT DE LA SECTION CONSIDEREE            " & Range("G24")(Z)

MsgBox " MOMENT DE FLEXION DANS LA SECTION CONSIDEREE        " & Range("G25")(Z)

MsgBox " MOMENT DE TORSION DANS LA SECTION CONSIDEREE        " & Range("G26")(Z)

End Sub
Sub oki()
 If X + INC <= Range("G28")(Z) Then X = X + INC
End Sub

Voilà ce que j'obtiens pour le moment :)

Je pense que pour le cas à 1500 la solution doit être la dedans
Code:
    If X > Range("D11") And X <= Range("D11") + Range("I11") Then
      FLECHE(Int(X / INC)) = FLECHE(Int(X / INC)) + 1 / Range("D17") / Range("H7") * (1 / 6 * (Range("D24") - Range("D25")) * X ^ 3 + 0.5 * Range("D11") * Range("D25") * X ^ 2 + C3 * X + C4)
      MOFLEX(Int(X / INC)) = MOFLEX(Int(X / INC)) + X * Range("D24") - (X - Range("D11")) * Range("D25")

Combiné à la dernière partie :
Code:
Range("G25")(Z) = Abs((Range("G28")(Z) - X) / (INC) * (MOFLEX(Int((X + INC) / INC)) - MOFLEX(Int(X / INC))) + MOFLEX(Int(X / INC))) / 1000
Range("G26")(Z) = (Range("G28")(Z) - X) / (INC) * (MOTORT(Int((X + INC) / INC)) - MOTORT(Int(X / INC))) + MOTORT(Int(X / INC))
Range("G24")(Z) = (Range("G28")(Z) - X) / (INC) * (FLECHE(Int((X + INC) / INC)) - FLECHE(Int(X / INC))) + FLECHE(Int(X / INC))

Et la sub "oki".

Je le sent je suis très proche mais il me manque l'étincelle ;)
 

Pièces jointes

  • ExtractionTT.zip
    19.4 KB · Affichages: 40
  • New.zip
    20.3 KB · Affichages: 43
  • New.zip
    20.3 KB · Affichages: 43
  • New.zip
    20.3 KB · Affichages: 41
Dernière édition:

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Merci pour le fichier Fhoest. Ceci me conforte dans la possibilité de résoudre ce problème ;). Je regarderais tout ceci demain matin mais ça à l'air prometteur.

Bonne fin de soirée.

Edit : Je n'ai pu m'empêcher de regardé un peu plus :p. C'est impressionnant ce que tu as fait. Ce que j'ai fait à comparé semble si laid :p. En plus le mien marche quasiment pas ^^.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Convertir du Qbasic vers VBA

Bonjour à tous


morest:
Ton fil me rappelle ce fil que j'avais initié jadis sur le meme sujet
https://www.excel-downloads.com/threads/conversion-qbasic-vba.73773/

Depuis j'utilise Qbasic pour montrer comment c'était avant de jouer sur un PC (avec Gorilla ou Nibbles) à mon neveu de 6 ans.
Effaré, il pleure et va jouer sur sa DS illico.

PS:
En cherchant des convertisseurs online, j'avais trouvé celui-ci
Code Converter | Provided by Telerik
(mais ne prends pas en charge le Qbasic)
Peut-être que depuis quelqu'un s'est attelé à la tâche.
 
Dernière édition:

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Salut Staple,

Oui il faudrait que je trouve un convertisseur de Qbasic à C# pour ensuite le convertir en vba :p. Le casse tête mais bon là je suis très proche du but je pense.^^.

C'est vrai qu'à l'époque des jeu qbasic c'était excellent maintenant on se demande comment on faisait pour y jouer ;)
 

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

Re,

Bon j'ai continué et j'ai sélectionné la partie qui reste plus que sombre. Tout le reste à savoir, la partie pour tracer le diagramme est inutile dans mon cas, les calculs du début sont assimilé, la partie final pour la sélection est maîtrisée.

J'ai mis en commentaire certaine partie qui me paraisse inutile pour obtenir les résultat de FCA(Z), MF(z) et MT(Z).

Le fichier est joint à ce message.

Si une âme charitable pouvait m'aider à finir j'en serais infiniment reconnaissant :p. Je sais que j'en ai déjà demandé beaucoup. Merci d'avance ou merci quand même ou encore même merci :p.
 

Pièces jointes

  • Clear Extraction.zip
    16.5 KB · Affichages: 36

morest

XLDnaute Occasionnel
Re : Convertir du Qbasic vers VBA

J'avais posté mon fichier épuré afin de réduire l'importance de la tâche mais en voyant ton magnifique travail sur le sujet j'ai l'impression que tu va réussir à le transposer en logiciel vba dans sa globalité. J'ai l'impression d'être un enfant attendant noël.

Mon fichier fait tellement amateur en comparaison du tiens :) Tu touches au but. A peine terminé ma version est déjà obsolète xD

Merci Fhoest pour tout :) Bon courage.
 
Dernière édition:

fhoest

XLDnaute Accro
Re : Convertir du Qbasic vers VBA

re,
il faudrait suivant les variables données leur limite afin de pouvoir controler les saisies
je ne comprend pas a quoi sert le Y,je vais intégrer deux formulaires d'entrer de valeur avec un calendrier,je pense qu'il y a encore beaucoup de travail,
il me faut également connaitre ce que fais le menu et le programme dans le fichier d'origine afin de pouvoir mieux orienter l'appel des différents sub et de l'application,car ce n'est pas chose facile et parfois je m'y perd un peu.
A+
 

Discussions similaires

Réponses
5
Affichages
377
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 484
Messages
2 088 794
Membres
103 969
dernier inscrit
fabien03