MsgBox NoteArrondie(Csng(Application.InputBox("Saisir une note entre 0 et 20, svp :")))
Sub CalculerNoteArrondie()
MsgBox NoteArrondie(Application.InputBox("Saisir une note entre 0 et 20, svp :"))
End Sub
Function NoteArrondie(ByVal maNote As Single)
Dim ecart As Single
ecart = maNote - Int(maNote)
NoteArrondie = Int(maNote) + IIf(ecart <= 0.00001, 0, IIf(ecart <= 0.5, 0.5, 1))
End Function
Sub CalculerNoteArrondie()
Dim note As Single, ecart As Single, noteArrondie As Single
Dim noteEntiere As Byte (Byte 2 Octet à la place de Single 4 Octet)
'Saisie de la note initiale
note = InputBox("Saisir une note comprise entre 0 et 20") ' 0 à 20 (Byte suffit = 0 à 255)
'RŽcupŽration de la partie entire de la note
noteEntiere = Int(note)
'DŽtermination de la note arrondie
ecart = note - noteEntiere
If ecart = 0 Then
noteArrondie = note
Else
If ecart > 0.5 Then
noteArrondie = noteEntiere + 1
Else
noteArrondie = noteEntiere + 0.5
End If
End If
MsgBox "La note Žtait = ˆ " & note & " elle devient " & noteArrondie
End Sub
C'est bien d'indiquer à qui on répond, avant de répondre svpMerci mais cela complexifie le programme, cela ne correspond plus à l'exercice initial
Avec nos machines actuelles (même celles vieilles de plus de 10 ans - il se reconnaitra le gars ) gagner 2 octets de-ci de-là ne change absolument rien. Avec les premiers PC, on y faisait gaffe, maintenant on peut passer au type long sans dommage.(Byte 2 Octet à la place de Single 4 Octet)
Tu as raison . J'avais zappé le fait que c'était un "exo".J'ai compris que c'est pour un exercice donc c'est possible d'optimiser pour la compréhension.
J'avais remarqué aussi. Mais je suis sur PC pas sur Mac donc je n'ai rien pu en déduire de vérifiable sous son OS.D'ailleurs le code fonctionne parfaitement dans son fichier original en Poste #1.
Bah cela fonctionne avec Option Explicit, non ?Sans spécifier les dim as cela fonctionne mais la contrainte est de démarrer avec option explicit
Option Explicit
Sub CalculerNoteArrondie()
Dim note, ecart, noteArrondie, noteEntiere
'Saisie de la note initiale
note = InputBox("Saisir une note comprise entre 0 et 20")
'Récupération de la partie entire de la note
noteEntiere = Int(note)
'DŽétermination de la note arrondie
ecart = note - noteEntiere
If ecart = 0 Then
noteArrondie = note
Else
If ecart > 0.5 Then
noteArrondie = noteEntiere + 1
Else
noteArrondie = noteEntiere + 0.5
End If
End If
MsgBox "La note était = ˆ " & note & " elle devient " & noteArrondie
End Sub
J'ai regardé ton string (euh pardon) ton code.