I think this covers it all.
Sub collatzCandicee()
Dim startRow As Double, duree As Double, x As Double
Dim n As Double, ev As Long, z As Long, am As Long
'On vide le classeur
Range("A2:B" & Rows.Count).Value = vbNullString
n = Application.InputBox("Insert startnumber", , , , , , , 1)
'On donne pour valeur initiale à n le nombre donné par l'utilisateur
x = n
flag = False: am = 0
startRow = 2
duree = 1 'C'est le début du décompte du nombre d'étapes avant d'obtenir 1
Range("C2").Value = x
Range("C1").Value = "Nombre de départ"
am = 0: z = 0
'On crée une boucle qui fonctionne tant que n n'a pas atteint 0
Do While n <> 1
If n Mod 2 > 0 Then
'Si le nombre est pair
n = (n * 3) + 1
ev = ev + 1
If flag = False Then: If n > am Then am = n
Else
'Si le nombre est impair
n = n / 2
ev = ev + 1
If flag = False Then: If n > am Then am = n
End If
If x > n Then
dva = IIf(dva = 0, ev, dva)
flag = True
End If
'On fait apparaitre la valeur à chaque boucle
Range("A" & startRow) = duree: Range("B" & startRow) = n
startRow = startRow + 1: duree = duree + 1
Loop
'On affiche les réponses
Range("D1").Value = "Durée du vol"
Range("D2") = ev
Range("E1").Value = "Durée du vol en altitude"
Range("E2") = dva
Range("F1").Value = "Altitude maximale"
Range("F2") = am
End Sub
Bookmarks