Salut

Je me pose la question suivante, un ordinateur n'ayant pas VB6 et antérieur, peut il utiliser ce programme écrit en VBScript, mais utilisant un programme qui lui est écrit en VB6 pour permettre la construction d'un dessin qui est récupéré par le programme VBScript.

J'ai fait l'essai sur un ordinateur sous Windows 10, à priori aucun programme écrit en VB6 n'a été installé auparavant, pourtant cela fonctionne .....

Le programme VBScript
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
<HTML>
        <HEAD>
        <TITLE> Calcul sur segment de cercle </TITLE>
        <HTA:APPLICATION
                ID = "CalSegCercle"
                APPLICATIONNAME="CalSegCercle"
                VERSION="1"
                MAXIMIZEBUTTON="no"
                SCROLL="no"
                BORDER = "thin"
<!--    ICON = "OutilPersoV.ico"  -->
        >
                <SCRIPT language="VBScript" type="text/vbscript">ResizeTo 350,645: MoveTo (Screen.Width-350)/2,(Screen.Height - 645) / 2</SCRIPT>
        </HEAD> 
<!-- ------------------------------------------------------------------------------------------------------------------------------ -->
        <SCRIPT language="VBScript">
        'Déclarations utilisables dans toute la partie VBScript       ' bord 8 et barre de titre 22+8
        Dim WshShell
        Dim DossierRacineDuProg 
        Dim MinMaxAngle(26)
        Const Pi = 3.14159265358979
        Dim S 'Arc
        Dim C 'Corde
        Dim H 'Fleche
        Dim R 'Rayon
        Dim D 'RmF Rayon-Fleche
        Dim T 'Theta Angle en radians
        Dim A 'Angle en degrés
        Dim K 'Zone(Surface)
        Dim EncouR, CalculFaux, MsgErr
        '----------------------------------------------------------------------------------------------------------------------
        Sub Window_Onload()
                Dim ChemNomComplet, FSO, LeFichier, PourTbl, MeTbl, TblCol, T, oOption
                ChemNomComplet = CalSegCercle.CommandLine ' ChemNomComplet = Id du programme.CommandLine
                DossierRacineDuProg = Left(ChemNomComplet, (InStrRev(ChemNomComplet, "\", -1, vbTextCompare)))
                DossierRacineDuProg = Replace(DossierRacineDuProg,Chr(34),"")
 
                Set FSO = CreateObject("Scripting.FileSystemObject")
                Set LeFichier = FSO.OpenTextFile(DossierRacineDuProg & "FichierArray.txt",1)
                PourTbl = LeFichier.ReadAll: LeFichier.Close
                Set FSO = Nothing
 
                MeTbl = split(PourTbl,vbNewLine)
                'vide la liste LstFormules (pour rafraichissement  Ajout/suppression dans le fichier FichierArray.txt)
                For T = LstFormules.length To 0 Step -1: LstFormules.Remove(T): Next
                For T = 0 To UBound(MeTbl)
                        TblCol = Split(MeTbl(T),"|")
                        Set oOption = window.Document.createElement("OPTION")
                        oOption.Value = TblCol(0): oOption.Text = TblCol(0)
                        LstFormules.Add (oOption)
                        MinMaxAngle(T) = Cstr(TblCol(1))
                Next
                Set oOption = Nothing
                LstFormules_onchange: LstFormules.Focus
                Set WshShell = CreateObject("WScript.Shell")
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub Window_OnUnload()
                Set WshShell=NotHing
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Function RadDeg(X)
                RadDeg = 180 * (X) / Pi 'angle en radian --> angle en degré
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function DegRad(X)
                DegRad = Pi * (X) / 180 'angle en degré --> angle en radian
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        '******************************** source des formules: http://mathforum.org/dr.math/faq/faq.circle.segment.html ***********
        Function Cas1(Arc , Corde ) 
        '......... Ok de 1° à 360° .........
        'S et C (Arc et Corde) --> c/s = sin(x)/x , sin(x)--> Le résultat est compris entre -1 et 1.
                S = Arc: C = Corde
                If Round(C, 2) >= Round(S, 2) Then MsgErr = "La corde ne peut être que plus petite que l'Arc d'un cercle": CalculFaux = True
                If Round(S, 2) <= Round(C, 2) Then MsgErr = "L'Arc du cercle doit être plus grand que la Corde": CalculFaux = True
                Dim C27 , C29 , C30 , C31 , C32 , C33 , C34 , C35 
                Dim E29 , E30 , E31 , E32 , E33 , E34 , E35 
                C27 = C / S: C29 = Sqr(6 - (6 * C27))
                E29 = Cos(C29): C30 = C29 - (Sin(C29) - C27 * C29) / (E29 - C27)
                E30 = Cos(C30): C31 = C30 - (Sin(C30) - C27 * C30) / (E30 - C27)
                E31 = Cos(C31): C32 = C31 - (Sin(C31) - C27 * C31) / (E31 - C27)
                E32 = Cos(C32): C33 = C32 - (Sin(C32) - C27 * C32) / (E32 - C27)
                E33 = Cos(C33): C34 = C33 - (Sin(C33) - C27 * C33) / (E33 - C27)
                E34 = Cos(C34): C35 = C34 - (Sin(C34) - C27 * C34) / (E34 - C27)
                E35 = Cos(C35)
                T = 2 * C35: R = S / T: D = R * E35: H = R - D: K = ((R ^ 2) * (T - Sin(T))) / 2: A = RadDeg(T)
                If A < 0.9999 Then
                        If MsgErr <> "" Then
                                MsgErr = MsgErr & vbNewLine & "Pour un calcul exacte, l'angle résultant doit être d'au moins 1°"
                                Else
                                MsgErr = "Pour un calcul exacte, l'angle résultant doit être d'au moins 1°": CalculFaux = True
                        End If
                End If
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas2(Arc , Rayon ) 
        '......... Ok de 1° à 360° .........
        'S et R (Arc et Rayon)
    S = Arc
    R = Rayon
        If Round(S, 4) = Round((2 * (4 * Atn(1)) * R), 4) Then
        'CalculFaux = False
        Else
                If Cdbl(S) > Cdbl(2 * Pi * R) Then MsgErr = "L'Arc ne peut être qu'égal ou plus petit que le perimetre du cercle": CalculFaux = True
                End If
                T = S / R: C = (2 * R) * Sin(T / 2): D = R * Cos(T / 2): H = R - D: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas3(Arc , Fleche ) 
        '......... Ok de 1° à 180° .........
        'Si les données font dépacer le 1/2 cercle, le résultat devient faut
        'S et H (Arc et Fleche) --> 2h/s = (1-cos[x])/x
                S = Arc: H = Fleche
                Dim C38 , C40 , C41 , C42 , C43 , C44 , C45 , C46 
                C38 = 2 * (H / S): C40 = 2 * C38
                C41 = C40 - (Cos(C40) + C38 * C40 - 1) / (-1 * Sin(C40) + C38)
                C42 = C41 - (Cos(C41) + C38 * C41 - 1) / (-1 * Sin(C41) + C38)
                C43 = C42 - (Cos(C42) + C38 * C42 - 1) / (-1 * Sin(C42) + C38)
                C44 = C43 - (Cos(C43) + C38 * C43 - 1) / (-1 * Sin(C43) + C38)
                C45 = C44 - (Cos(C44) + C38 * C44 - 1) / (-1 * Sin(C44) + C38)
                C46 = C45 - (Cos(C45) + C38 * C45 - 1) / (-1 * Sin(C45) + C38)
                T = 2 * C46: R = S / T: C = 2 * R * Sin(C46): A = RadDeg(T): D = R - H: K = (R ^ 2) * (T - Sin(T)) / 2
                If A > 180.000000000001 Or C > (R * 2) Then MsgErr = "Pour un calcul exacte, l'angle résultant ne doit pas dépacer 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas4(Arc , Theta ) 
        'S et T (Arc et Theta(Angle en radians))
                S = Arc: T = Theta
                R = S / T: C = (2 * R) * Sin(T / 2): D = R * Cos(T / 2): H = R - D: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas5(Arc , RmF ) 
        '......... Ok de 1° à 180° .........
        'S et D (Arc et (Rayon-Fleche)) --> 2d/s = cos(x)/x
                S = Arc: D = RmF
                Dim D38 , D40 , D41 , D42 , D43 , D44 , D45 , D46 
                D38 = 2 * (D / S): D40 = Sqr(2 + D38 ^ 2) - D38
                D41 = D40 - (Cos(D40) - D38 * D40) / (-1 * Sin(D40) - D38)
                D42 = D41 - (Cos(D41) - D38 * D41) / (-1 * Sin(D41) - D38)
                D43 = D42 - (Cos(D42) - D38 * D42) / (-1 * Sin(D42) - D38)
                D44 = D43 - (Cos(D43) - D38 * D43) / (-1 * Sin(D43) - D38)
                D45 = D44 - (Cos(D44) - D38 * D44) / (-1 * Sin(D44) - D38)
                D46 = D45 - (Cos(D45) - D38 * D45) / (-1 * Sin(D45) - D38)
                T = 2 * D46: R = S / T: C = 2 * R * Sin(D46): H = R - D: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If Round(H, 3) > Round(R * 2, 3) Then CalculFaux = True
                If A < 1 Or A > 180 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas6(Arc , Zone ) 
        '......... Ok de 1° à 180° .........
        'S et K (Arc et Zone) --> 2K/S² = (theta-sin[theta])/theta²  --> 2K/s² = (x-sin[x])/X²
                S = Arc: K = Zone
                Dim E38 , E40 , E41 , E42 , E43 , E44 , E45 , E46 
                E38 = (2 * K) / (S ^ 2): E40 = 6 * E38
                E41 = E40 - (E38 * E40 ^ 2 - E40 + Sin(E40)) / (2 * E38 * E40 - 1 + Cos(E40))
                E42 = E41 - (E38 * E41 ^ 2 - E41 + Sin(E41)) / (2 * E38 * E41 - 1 + Cos(E41))
                E43 = E42 - (E38 * E42 ^ 2 - E42 + Sin(E42)) / (2 * E38 * E42 - 1 + Cos(E42))
                E44 = E43 - (E38 * E43 ^ 2 - E43 + Sin(E43)) / (2 * E38 * E43 - 1 + Cos(E43))
                E45 = E44 - (E38 * E44 ^ 2 - E44 + Sin(E44)) / (2 * E38 * E44 - 1 + Cos(E44))
                E46 = E45 - (E38 * E45 ^ 2 - E45 + Sin(E45)) / (2 * E38 * E45 - 1 + Cos(E45))
                T = E46: R = S / T: C = (2 * R) * Sin(T / 2): D = R * Cos(T / 2): H = R - D: A = RadDeg(T)
                If D < 1 Or C > R * 2 Then CalculFaux = True
                If A < 1 Or A > 180 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas7(Corde , Rayon ) 
        'C et R (Corde et Rayon)
                C = Corde: R = Rayon
                If C = R * 2 Then
                        'pour eviter ArcSin(C / (2 * R)) = division par zéro
                        R = (C / 2) + 0.0000000001
                        Else
                        If C > R * 2 Then MsgErr = "Le Rayon ne peut être qu'égal ou plus grand que Corde/2": CalculFaux = True
                End If
                T = 2 * ArcSin(C / (2 * R)): S = R * T: D = R * Cos(T / 2): H = R - D: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If A < 1 Or A > 180 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas8(Corde , Fleche ) 
        '......... Ok de 1° à 180° .........
        'C et H (Corde et Fleche)
                C = Corde: H = Fleche: R = ((C ^ 2) + (4 * (H ^ 2))) / (8 * H)
                If R = C / 2 Then R = (C / 2) + 0.0000000001 'pour eviter ArcSin(C / (2 * R)) = division par zéro
                T = 2 * ArcSin(C / (2 * R)): S = R * T: D = R - H: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If A < 1 Or A > 180 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
                If H > R And CalculFaux = False Then MsgErr = "Pour un calcul exacte, le Rayon résultant doit être plus petit ou égal à la Fleche": CalculFaux = True
                If Round(C, 3) - Round(S, 3) < 1 And Round(A, 3) > 180 And CalculFaux = False Then
                        MsgErr = "Pour un calcul exacte, l'Arc résultant doit être plus grande que Corde + 1": CalculFaux = True
                End If
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas9(Corde , Theta ) 
        '......... Ok de 1° à 360° .........
        'C et T (Corde et Theta(Angle en radians))
                C = Corde: T = Theta: R = C / (2 * Sin(T / 2)): S = R * T: D = R * Cos(T / 2): H = R - D: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If A < 1 Or T > 6.28318530717958 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 360°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas10(Corde , RmF ) 
        '......... Ok de 1° à 180° .........
        'C et D (Corde et (Rayon-Fleche))
                C = Corde: D = RmF: R = Sqr((C ^ 2) + 4 * (D ^ 2)) / 2: H = R - D
                If R = C / 2 Then R = (C / 2) + 0.0000000001 'pour eviter ArcSin(C / (2 * R)) = division par zéro
                T = 2 * ArcSin(C / (2 * R)): S = R * T: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If A < 1 Or A > 180 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
                If H > R And CalculFaux = False Then MsgErr = "Pour un calcul exacte, la Fleche résultant doit être égal ou plus petite que le Rayon": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas11(Corde , Zone ) 
        '......... Ok de 1° à 180° .........
        'C et K (Corde et Zone) --> 4K/c² = (T-sin[T])/(1-cos[T]) --> 4K/c² = (x-sin[x]/(1-cos(x))
                C = Corde: K = Zone
                Dim F38 , F40 , F41 , F42 , F43 , F44 , F45 , F46 
                F38 = (4 * K) / (C ^ 2): F40 = 3 * F38
                F41 = F40 - (F38 * Cos(F40) - Sin(F40) + F40 - F38) / (1 - F38 * Sin(F40) - Cos(F40))
                F42 = F41 - (F38 * Cos(F41) - Sin(F41) + F41 - F38) / (1 - F38 * Sin(F41) - Cos(F41))
                F43 = F42 - (F38 * Cos(F42) - Sin(F42) + F42 - F38) / (1 - F38 * Sin(F42) - Cos(F42))
                F44 = F43 - (F38 * Cos(F43) - Sin(F43) + F43 - F38) / (1 - F38 * Sin(F43) - Cos(F43))
                F45 = F44 - (F38 * Cos(F44) - Sin(F44) + F44 - F38) / (1 - F38 * Sin(F44) - Cos(F44))
                F46 = F45 - (F38 * Cos(F45) - Sin(F45) + F45 - F38) / (1 - F38 * Sin(F45) - Cos(F45))
                T = F46: R = C / (2 * Sin(T / 2)): S = R * T: D = R * Cos(T / 2): H = R - D: A = RadDeg(T)
                If A < 1 Or A > 180.00003 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas12(Rayon , Fleche ) 
        'R et H (Rayon et Fleche)
                R = Rayon: H = Fleche
                D = R - H: T = 2 * ArcCos(D / R): C = (2 * R) * Sin(T / 2): S = R * T: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If A < 0.9999 Or A > 180.00003 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas13(Rayon , Theta ) 
        'R et T (Rayon et T(Angle en radians))
                R = Rayon: T = Theta
                S = R * T: D = R * Cos(T / 2): H = R - D: C = (2 * R) * Sin(T / 2): K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If A < 0.9999 Or A > 360 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 360°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas14(Rayon , RmF ) 
        'R et D (Rayon et (Rayon-Fleche))
                R = Rayon: D = RmF: H = R - D
                If D / R = -1 Then  T = 6.28318530717958 Else  T = 2 * ArcCos(D / R)
                C = (2 * R) * Sin(T / 2): S = R * T: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If A < 0.9999 Or A > 360 Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 360°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas15(Rayon , Zone ) 
        '......... Ok de 1° à 360° .........
        'R et K (Rayon et Zone) --> 2K/r² = T - sin(T) --> x-sin(x)
                R = Rayon: K = Zone
                Dim G38 , G40 , G41 , G42 , G43 , G44 , G45 , G46 
                G38 = (2 * K) / (R ^ 2): G40 = (6 * G38) ^ 0.3333
                G41 = G40 - (G40 - Sin(G40) - G38) / (1 - Cos(G40))
                G42 = G41 - (G41 - Sin(G41) - G38) / (1 - Cos(G41))
                G43 = G42 - (G42 - Sin(G42) - G38) / (1 - Cos(G42))
                G44 = G43 - (G43 - Sin(G43) - G38) / (1 - Cos(G43))
                G45 = G44 - (G44 - Sin(G44) - G38) / (1 - Cos(G44))
                G46 = G45 - (G45 - Sin(G45) - G38) / (1 - Cos(G45))
                T = G46: S = R * T: C = (2 * R) * Sin(T / 2): D = R * Cos(T / 2): H = R - D: A = RadDeg(T)
                If Round(K, 4) > Round(((R ^ 2) * (4 * Atn(1))), 4) Then
             MsgErr = "Soit votre surface est plus grand que le permet le rayon," & vbNewLine _
                    & "soit votre rayon est trop petit en rapport de votre surface"
            CalculFaux = True
                End If
                If (A < 0.9999 Or A > 360) And CalculFaux = False Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 360°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas16(Fleche , Theta ) 
        'H et T (Fleche et T(Angle en radians))
                H = Fleche: T = Theta
                R = H / (1 - Cos(T / 2)): D = R - H: C = (2 * R) * Sin(T / 2): S = R * T: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If (A < 0.9999 Or A > 360) Then
                        MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 360°" & vbNewLine _
                   & "Ou T(angle en radians) compris entre 0.00174532925199 et 6,28318530717958"
                        CalculFaux = True
                End If
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas17(Fleche , RmF ) 
        'H et D (Fleche et Rayon-Fleche)
                H = Fleche: D = RmF: R = H + D
                If D / R <= -1 Then T = 6.28318530717958 Else T = 2 * ArcCos(D / R)
                C = (2 * R) * Sin(T / 2): S = R * T: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
                If (A < 0.9999 Or A > 360) Then
                        MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 360°" & vbNewLine _
                   & "Ou T(angle en radians) compris entre 0.00174532925199 et 6,28318530717958"
                                        CalculFaux = True
                End If
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas18(Fleche , Zone ) 
        'H et K (Fleche et Zone)) --> 2K/h² = (T-sin[T])/(1-cos[T/2])² --> (x-sin(x)) / ((1-cos(x/2)) * (1-cos(x/2)))
                H = Fleche: K = Zone
                Dim H38 , H40 , H41 , H42 , H43 , H44 , H45 , H46 
                H38 = (2 * K) / (H ^ 2): H40 = 32 / (3 * H38)
                H41 = H40 - (H38 * (1 - Cos(H40 / 2)) ^ 2 - H40 + Sin(H40)) / (H38 * Sin(H40 / 2) - H38 * Sin(H40 / 2) * Cos(H40 / 2) - 1 + Cos(H40))
                H42 = H41 - (H38 * (1 - Cos(H41 / 2)) ^ 2 - H41 + Sin(H41)) / (H38 * Sin(H41 / 2) - H38 * Sin(H41) / 2 - 1 + Cos(H41))
                H43 = H42 - (H38 * (1 - Cos(H42 / 2)) ^ 2 - H42 + Sin(H42)) / (H38 * Sin(H42 / 2) - H38 * Sin(H42) / 2 - 1 + Cos(H42))
                H44 = H43 - (H38 * (1 - Cos(H43 / 2)) ^ 2 - H43 + Sin(H43)) / (H38 * Sin(H43 / 2) - H38 * Sin(H43) / 2 - 1 + Cos(H43))
                H45 = H44 - (H38 * (1 - Cos(H44 / 2)) ^ 2 - H44 + Sin(H44)) / (H38 * Sin(H44 / 2) - H38 * Sin(H44) / 2 - 1 + Cos(H44))
                H46 = H45 - (H38 * (1 - Cos(H45 / 2)) ^ 2 - H45 + Sin(H45)) / (H38 * Sin(H45 / 2) - H38 * Sin(H45) / 2 - 1 + Cos(H45))
                T = H46: R = Sqr((2 * K) / (T - Sin(T))): D = R - H: C = (2 * R) * Sin(T / 2): S = R * T: A = RadDeg(T)
                If (A < 0.9999 Or A > 180.0001) Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas19(Theta , RmF ) 
        'T et D (Theta(Angle en radians) et (Rayon-Fleche))
                T = Theta
                If T > 6.28318530717958 Then MsgErr = "Theta (angle en radiants) ne peut être plus peti ou égal à 6.28318530717958": CalculFaux = True
                If T < 1.74532925199433E-02 And MsgErr = "" Then MsgErr = "Pour un calcul exacte, Theta (angle en radiants) ne peut être plus petit ou égal à 6.28318530717958 soit 1°": CalculFaux = True
                D = RmF: R = D / (Cos(T / 2)): H = R - D: C = (2 * D) * Tan(T / 2): S = R * T: K = (R ^ 2) * (T - Sin(T)) / 2: A = RadDeg(T)
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas20(Theta , Zone ) 
        'T et K (Theta(Angle en radians) et Zone)
                T = Theta
                If T > 6.28318530717958 Then MsgErr = "Theta (angle en radiants) ne peut être que plus petit ou égal à 6.28318530717958": CalculFaux = True
                If T < 1.74532925199433E-02 Then MsgErr = "Pour un calcul exacte, Theta (angle en radiants) ne peut être que plus grand ou égal à 1.74532925199433E-02 soit 1°": CalculFaux = True
                K = Zone: R = Sqr((2 * K) / (T - Sin(T))): S = R * T: D = R * Cos(T / 2): H = R - D: C = (2 * R) * Sin(T / 2): A = RadDeg(T)
                If H > R * 2 And CalculFaux = False Then MsgErr = "Pour un calcul exacte, la Fleche résultante ne peut être plus grand que 2 * Rayon": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Function Cas21(RmF , Zone ) 
        'D et K ((Rayon-Fleche) et Zone) --> K/d² = (T-sin[T])/(1+cos[T])   --> (x-sin(x))  /  (1+cos(x))
                D = RmF: K = Zone
                Dim I38 , I40 , I41 , I42 , I43 , I44 , I45 , I46 
                I38 = K / (D ^ 2): I40 = (12 * I38) ^ 0.3333
                I41 = I40 - (I40 - Sin(I40) - I38 * Cos(I40) - I38) / (1 - Cos(I40) + I38 * Sin(I40))
                I42 = I41 - (I41 - Sin(I41) - I38 * Cos(I41) - I38) / (1 - Cos(I41) + I38 * Sin(I41))
                I43 = I42 - (I42 - Sin(I42) - I38 * Cos(I42) - I38) / (1 - Cos(I42) + I38 * Sin(I42))
                I44 = I43 - (I43 - Sin(I43) - I38 * Cos(I43) - I38) / (1 - Cos(I43) + I38 * Sin(I43))
                I45 = I44 - (I44 - Sin(I44) - I38 * Cos(I44) - I38) / (1 - Cos(I44) + I38 * Sin(I44))
                I46 = I45 - (I45 - Sin(I45) - I38 * Cos(I45) - I38) / (1 - Cos(I45) + I38 * Sin(I45))
                T = I46: R = D / Cos(T / 2): H = R - D: C = (2 * R) * Sin(T / 2): S = R * T: A = RadDeg(T)
                If (A < 0.9999 Or A > 180.0001) Then MsgErr = "Pour un calcul exacte, l'angle résultant doit être compris entre 1° et 180°": CalculFaux = True
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Sub Cas22(Alpha , Arc )
                Call Cas4(Arc, DegRad(Alpha))
        End Sub
        Sub Cas23(Alpha , Corde )
                Call Cas9(Corde, DegRad(Alpha))
        End Sub
        Sub Cas24(Alpha , Rayon )
                Call Cas13(Rayon, DegRad(Alpha))
        End Sub
        Sub Cas25(Alpha , Fleche )
                Call Cas16(Fleche, DegRad(Alpha))
        End Sub
        Sub Cas26(Alpha , RmF )
                Call Cas19(DegRad(Alpha), RmF)
        End Sub
        Sub Cas27(Alpha , Zone )
                Call Cas20(DegRad(Alpha), Zone)
        End Sub
        '********************************************* Fin partie formules ************************************************
        Sub LstFormules_onchange()
                Dim Idx, Tbl1, Tbl2
                Idx = "Cas" & LstFormules.selectedindex
                Select Case Idx
                        Case "Cas18", "Cas19"
                                Infos0.InnerText = "Theta[Angle en radians]"
                                If Idx = "Cas18" Then Infos1.InnerText = "Rayon-Fleche" Else Infos1.InnerText = "Zone"
                        Case "Cas20", "Cas21", "Cas22", "Cas23", "Cas24", "Cas25", "Cas26", "Cas27"
                                Infos0.InnerText = "Alpha[Angle en degrés]"
                                Tbl1 = Split(LstFormules.Value, "et", 2, vbTextCompare)
                                Tbl2 = Split(Tbl1(1), "et", 2, vbTextCompare)
                                Infos1.InnerText = Trim(Replace(Tbl2(1), ")", "", 1, -1, vbTextCompare))
                        Case Else
                                Tbl1 = Split(LstFormules.Value, "(", -1, vbTextCompare)
                                Tbl2 = Split(Tbl1(1), "et", 2, vbTextCompare)
                                Infos0.InnerText = Trim(Tbl2(0))
                                Infos1.InnerText = Replace(Tbl2(1), ")", "", 1, -1, vbTextCompare)
                End Select
                InfosX.InnerText = " 1° à " & MinMaxAngle(LstFormules.selectedindex) & " "
        End Sub                                                                                                                                                                                                                                                                                                                                                                                          
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextData0_onFocus()
                TextData0.Style.background="#BBFF91"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextData0_onBlur()
                TextData0.Style.background="#FFFFFF"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextData0_onkeypress()
                If (window.event.keyCode) = 13 Then TextData1.Focus
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextData1_onFocus()
                TextData1.Style.background="#BBFF91"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextData1_onBlur()
                TextData1.Style.background="#FFFFFF"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextData1_onkeypress()
                If (window.event.keyCode) = 13 Then Cmd1.Focus
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub Cmd1_onFocus()
                Cmd1.Style.background="#BBFF91"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub Cmd1_onBlur()
                Cmd1.Style.background="#D2D2D2"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextSolution_onFocus()
                If EncouR = True Then Exit Sub
                TextSolution.Style.background="#FFFF9C"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextSolution_onBlur()
                If EncouR = True Then Exit Sub
                TextSolution.Style.background="#FFFFFF"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub Check1_onFocus()
                Check1.Style.background="#BBFF91"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub Check1_onBlur()
                Check1.Style.background="#FFFFFF"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextMemo_onFocus()
                TextMemo.Style.background="#FFFF9C"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub TextMemo_onBlur()
                TextMemo.Style.background="#FFFFFF"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub Deplier_onmouseover() 'la souris commence a passer au dessus de l'objet
                Deplier.Style.Color = "#FFFFFF": Deplier.Style.background = "#00CE00"
        End Sub
        '------------------------------------------------------------------------------------------------------------------
        Sub Deplier_onclick()
                If Deplier.InnerTexT = "<<<" then Deplier.InnerTexT = ">>>": ResizeTo 350,645 Else Deplier.InnerTexT = "<<<": ResizeTo 886,645
        End Sub
        '------------------------------------------------------------------------------------------------------------------
        Sub Deplier_onmouseout() 'la souris quitte l'objet
                Deplier.Style.Color = "#0013FF": Deplier.Style.background = "#C2E1FF"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub ScrImg_onmouseover() 'la souris commence a passer au dessus de l'objet
                ScrImg.Src="Source1.gif"
        End Sub
        '------------------------------------------------------------------------------------------------------------------
        Sub ScrImg_onmouseout() 'la souris quitte l'objet
                ScrImg.Src="Source0.gif"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub BtAide_onmouseover() 'la souris commence a passer au dessus de l'objet
                BtAide.Style.Color = "#FFFFFF": BtAide.Style.background = "#00CE00"
        End Sub
        '------------------------------------------------------------------------------------------------------------------
        Sub BtAide_onclick()
                If PictDess.Style.display = "" Then PictDess.Style.display = "none" Else PictDess.Style.display = ""
        End Sub
        '------------------------------------------------------------------------------------------------------------------
        Sub BtAide_onmouseout() 'la souris quitte l'objet
                BtAide.Style.Color = "#0013FF": BtAide.Style.background = "#C2E1FF"
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Sub Cmd1_onClick()
                Dim Idx, MemoText
                If Trim(TextData0.Value) = "" Or Trim(TextData1.Value) = "" Then
                        WshShell.Popup "Il manque au moins une entrée", 3, "Pour information", 0 + 64
                        Exit Sub
                End IF
                Cmd1.disabled = "disabled": Cmd1.Style.background="#D2D2D2": EncouR = True 'pour ne pas modifier la couleur de fond de "TextSolution" durant le calcul
                MemoText = TextSolution.Value
                TextSolution.innertext = "": MsgErr = "": CalculFaux = False
                Idx = "Cas" & (LstFormules.selectedindex + 1)
                On Error Resume Next
                'appel de la fonction appropriée pour le calcul, Cas1, Cas2, Cas3 ....., Cas25, Cas26, Cas27
                CallByName Idx, TextData0.Value, TextData1.Value
                If MsgErr <> ""  Then  WshShell.Popup MsgErr, 3, "Pour information", 0 + 64
                If Err = 0 Then
                        TextSolution.innertext = "Arc: -------------- S " & StrArrForm(S) & vbNewLine & _
                                                                         "Corde: ------------ C " & StrArrForm(C) & vbNewLine & _
                                                                         "Rayon: ------------ R " & StrArrForm(R) & vbNewLine & _
                                                                         "Fleche: ----------- H " & StrArrForm(H) & vbNewLine & _
                                                                         "Rayon - Fleche: --- D " & StrArrForm(D) & vbNewLine & _
                                                                         "Angle en degrés: ---A " & StrArrForm(A) & vbNewLine & _
                                                                         "Angle en radians: - T " & StrArrForm(T) & vbNewLine & _
                                                                         "Zone: ------------- K " & StrArrForm(K)
                        If Check1.Checked Then 'Remplacer
                                MemoText = ""
                                Else 'Ajouter
                                MemoText = TextMemo.innertext & vbNewLine & "*******************************" & vbNewLine
                        End If
                        TextMemo.innertext = MemoText & "Arc: -------------- S " & S & vbNewLine & _
                                                                                        "Corde: ------------ C " & C & vbNewLine & _
                                                                                        "Rayon: ------------ R " & R & vbNewLine & _
                                                                                        "Fleche: ----------- H " & H & vbNewLine & _
                                                                                        "Rayon - Fleche: --- D " & D & vbNewLine & _
                                                                                        "Angle en degrés: ---A " & A & vbNewLine & _
                                                                                        "Angle en radians: - T " & T & vbNewLine & _
                                                                                        "Zone: ------------- K " & K
                        Else 'Err <> 0
                        WshShell.Popup "Une ou plusieurs de vos données ont" & vbNewLine & "provoqué une erreur de calcul", 1, "Pour information", 0 + 64
                        TextSolution.innertext = MemoText
                End If
 
                Dim CmdLine, Ret
                CmdLine = chr(34) & DossierRacineDuProg & "ModAffiche.exe " & chr(34) & S & " " & C & " " & H & " " & R & " " & D & " " & A & " " & K & " " & Cint(CalculFaux)
                Ret = WshShell.Run (CmdLine, 2, True)
                If Ret = 0 Then PictDess.Src = "":PictDess.Src = "SortieDess.bmp" Else MsgBox "Sortie graphique échouée"
 
                Cmd1.disabled = "": EncouR = False: BtAide.Style.display = "":PictDess.Style.display = ""
                TextSolution.Style.Color = "#000000": TextSolution.Style.background="#FFFFFF"
                TextSolution.Focus
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        Function StrArrForm(Don)
                Dim Datax, EntieR , RestE, StrReste
                StrArrForm = "Erreur"
                Datax = FormatNumber(Don, 3)
                EntieR = Fix(Datax): RestE = Csng(Datax - EntieR)
                StrReste = Cstr(FormatNumber(RestE, 3,-1 ))
                StrReste = Right(StrReste, 4)
                StrArrForm = String(10 - Len(CStr(EntieR)), " ") & CStr(EntieR) & StrReste
        End Function
        '----------------------------------------------------------------------------------------------------------------------
        Sub CallByName(NonProc,Data0,Data1)
                dim CallNameBy
                Set CallNameBy = GetRef(NonProc): CallNameBy Data0, Data1
                Set CallNameBy = NotHing
        End Sub
        '----------------------------------------------------------------------------------------------------------------------
        </SCRIPT>
<!-- ------------------------------------------------------------------------------------------------------------------------------ -->
        <body style="font-family:MS Sans Serif, Courier New, Arial, Verdana, serif; font-size=10px; font-weight:bold; background-color:#C2E1FF; color:#000000"  >
 
                <SELECT name="LstFormules" Id="LstFormules"
                        Style="font-family:Courier New; position:absolute; left:4px; top:8px; height:22px; width:321px "> </SELECT>
                <Div Id="InfosX" style="position:absolute; left:120px; top:32px; height:13px; width:50px; background-color:#4848FF; color:#FFFFFF"> 1° à 360° </Div>
                <Div Id="Infos0" style="position:absolute; left:4px; top:47px; height:13pSx; width:141px">Arc </Div>
                <Div Id="Infos1" style="position:absolute; left:144px; top:47px; height:13px; width:141px">Corde </Div>
                <Div Id="Deplier" style="Color:#0013FF; background-color:#C2E1FF; font-size=12px; position:absolute; left:305px; top:32px; height:13px; width:20"> >>> </Div>
                <Img Id="FicheTechn" Src="Image1.jpg" style="position:absolute; left:330px; top:4px; border:none" >
                <Input Type="Text" name="TextData0" id="TextData0" 
                        Style="background-color:#FFFFFF; position:absolute; left:4px; top:63px; height:21px; width:133px" >
                <Input Type="Text" name="TextData1" id="TextData1"
                        Style="background-color:#FFFFFF; position:absolute; left:148px; top:63px; height:21px; width:133px" >
                <Input Type="button" name="Cmd1" id="Cmd1" Value="Go"
                        style="background-color:#D2D2D2; position:absolute; left:288px; top:63px; height:21px; width:33px" >
                <TEXTAREA name="TextSolution" id="TextSolution"
                        style="font-family:Courier New; background-color:white; position:absolute; left:4px; top:87px; height:134px; width:321px" ></TEXTAREA>
                <Div Id="Rien" style="position:absolute; left:4px; top:228px; height:13px; width:215"> v Pour memo, drag en drop possible v </Div>
                <Input Type="checkbox" name="Check1" id="Check1" Style="background-color:#FFFFFF;position:absolute; left:232px; top:228px; height:13px; width:13px" >
                <Div Id="Check" style="position:absolute; left:247px; top:228px; height:13px; width:93"> Remplacer </Div>
                <TEXTAREA name="TextMemo" id="TextMemo"
                        style="font-family:Courier New; font-size=12px; background-color:white; position:absolute; left:4px; top:244px; height:355px; width:321px" ></TEXTAREA>
                <A href="http://mathforum.org/dr.math/faq/faq.circle.segment.html" target="_blank" >
                        <Img Name="ScrImg" id="ScrImg" Src="Source0.gif" style="border:none; position:absolute; left:700px; top:36px">
                </A>
                <Img Name="PictDess" Src="" style="position:absolute; left:330px; top:35px; border:none; display:none" >
                <Div Id="BtAide" style="Color:#0013FF; background-color:#C2E1FF; font-size=18px; position:absolute; left:848px; top:6px; height:13px; width:13; display:none"> ? </Div>
 
        </Body>
</HTML>
Ce programme utilise un fichier externe FichierArray.txt qui contient le titre de 27 formules mathématique.
Après choix de la formule souhaitée, les 2 cases remplis, le calcul est fait et affiché, le programme VBScript fournit au programme ModAffiche.exe 7 arguments en ligne de commande.
Le programme ModAffiche.exe construit le dessin et le sauvegarde (en BMP pour une bonne résolution) sous le nom SortieDess.bmp.
Le programme VBScript CalSegCercle.hta le récupère, et l'affiche.

Vos retours me seraient très utiles, merci d'avance.
Si le programme ne fonctionne pas, vous pouvez supprimer les lignes 510 à 513, qui servent à la partie sortie graphique, le restant fonctionnant sans dessin de la figure géométrique.

Voici l'ensemble des fichiers nécessaires compactés dans un dossier.
SegCercleHTA.zip