Bonjour, ça fait 4 heures que je prends la tête avec un petit problème que je n'arrive pas à résoudre.
Voici le macro:
si je rentre a=4 et b = 16, le programme devrait:
Code : 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 Sub teste() Dim a, b, c, d As Integer a = InputBox("nb1") b = InputBox("nb2") c = a d = b While c <> d If c > d Then d = (d + b) Else c = (c + a) End If Wend MsgBox ("Le PPCM de " + Str(a) + " et " + Str(b) + " est " + Str(c)) MsgBox ("Le PGCD de " + Str(c) + " et " + Str(b) + " est " + Str(c / a)) End Sub
-passer dans le while et donc 4 est différent de 16.
-passer dans le Else car 4>16 n'est pas respecté
- rajouter 4 a 4 donc 8.
refaire la mémé opération : alors c = 12
et encore une fois: alors c = 16
16 =16 on sort du while.
Seulement le programme bug et me dit : d = limite maximum ( 32 000 ...)
Pourquoi? Qu'est-ce qui vient modifier la valeur de d alors qu'on ne rentre jamais dans la première partie de la fonction si?
ps: la valeur de c devient également "44444"...
Si on remplace les inputbox pas les valeurs directes, alors pas de problème. Cela pourrait-il venir de la?
Merci d'avance
Solution : multiplier les input par 1.
Quelqu'un pourrait-il me dire pourquoi? d'après ce que j'ai lu sur internet ça transforme le texte en nombre mais ce que je ne comprends pas c'est que si on tape :
la ça ne pose pas de problème :s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 a=input("nombre") msgbox(a+1)
Partager