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:
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
si je rentre a=4 et b = 16, le programme devrait:
-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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
a=input("nombre")
msgbox(a+1)
la ça ne pose pas de problème :s