Bonjour !
je dois écrire un programme pour calculer les différents éléments de la suite de Collatz : le vol, l’altitude maximale du vol, la durée du vol en altitude et la durée du vol.
1er problème je ne sais pas comment définir la durée du vol en altitude (qui est égale au nombre d’étapes avant que le nouveau nombre soit inférieur au nombre de départ).
2è problème mon programme se lance, la fenêtre inputbox s’ouvre mais rien ne se passe. Aucun résultat ne s’affiche sur ma feuille.
Sub Collatz()
Dim nombre As Long 'entier positif choisi qui va servir au calcul de la suite
Dim alt_max As Long 'nombre le plus grand (fonction max)à faire à la fin surement
Dim durée_vol_alt As Long 'nombre d’étapes avec nombre > 1 (worksheet.application)
Dim durée_vol As Long[ 'nombre d’étape avec nombre <> 1(worksheet.application)
durée_vol = 0 'initialement 0 car aucune étape
durée_vol_alt = 0
alt_max = 0
nombre = 0
nombre = Application.InputBox("nombre = ", “Algorithme de Collatz, saisissez un nombre entre 1 et 1000”, “1”) 'ouvre une boite de dialogue pour choisir n
If nombre < 1 Or nombre > 1000 Then MsgBox (“saisie incorrecte”):
Exit Sub 'si saisie incorrecte arrete le programme et préviens l’utilisateur
Worksheets(“Feuil2”).Cells(1, 2).Value = “nombre choisi”
Worksheets(“Feuil2”).Cells(2, 2).Value = nombre
Do While nombre <> 1
If nombre Mod 2 = 0 Then
nombre = (nombre / 2) 'nouvelle valeur du nombre quand le nombre est pair
Else: nombre = (nombre * 3 + 1)
End If
If nombre > 1 Then
durée_vol = durée_vol + 1 '1 étape supplémentaire à chaque nouveau nombre différent de 1
Worksheets(“Feuil2”).Cells(durée_vol, 1).Value = nombre 'Affecter à chaque ligne de la colonne le nombre de chaque étape ie les étapes du vol
End If
'Je veux le max alt_max, c’est à dire le plus grand nombre se trouvant en colonne 1
Max = Application.Max(nombre)
Worksheets(“Feuil2”).Cells(2, 3).Value = Max
Worksheets(“Feuille”).Cells(1, 3).Value = “Altitude maximale”
Loop
End Sub
Pouvez vous m’aider ??
Merci d’avance :slight_smile: