EXCEL et VBA- niveau débutante [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
lundi 22 décembre 2014
Statut
Membre
Dernière intervention
22 décembre 2014
-
Messages postés
3
Date d'inscription
lundi 22 décembre 2014
Statut
Membre
Dernière intervention
22 décembre 2014
-
Bonjour,

Je suis étudiante en IUT et on nous dispense un cours de programmation sous Visual Basic. Pendant les vacances, je dois rendre mes exercices sous VBA en passant par Excel, et je bloque sur l'exécution de ma commande. L'exercice, c'est d'utiliser des alternatives pour un petit programme, mais il y a une mise en forme que je n'ai pas dû faire correctement, car seule la dernière conditionnelle est prise en compte dans l'exécution...
Je n'y connais rien, suis débutante niveau très en dessous de zéro et n'ai pas de personne à qui me référer en ce moment. Est-ce que quelqu'un voit ce qui cloche dans ma saisie à tout hasard?
Ce n'est peut-être pas cette forme d'alternative que je dois utiliser? Notre guide papier n'est pas très explicite, et j'avoue que je suis larguée...
Merci d'avance pour le coup de main ;)

Dim N1 As Single
Dim N2 As Single
Dim EXAM As Single
Dim MOY As Single
Dim MESSAGE As String
Dim NOM As String
Dim PRENOM As String
Sub main()

    'Saisie des données
    NOM = InputBox("Saisissez le nom : ")
    PRENOM = InputBox("Saisissez le prénom : ")
    N1 = InputBox("Saisissez la première note de " & NOM)
    N2 = InputBox("Saisissez la seconde note de " & NOM)
    EXAM = InputBox("Saisissez la note d'examen de " & NOM)
    
    'Calcul de la moyenne
    MOY = (N1 + N2 + EXAM) / 3
    If MOY > EXAM Then
        NOTE = MOY
        Else: NOTE = EXAM
    End If
        
    'Calcul de la mention
    If NOTE > OU = 16 Then
    MESSAGE = "a la mention TB."
          Else:
          If NOTE > OU = 14 Then
          MESSAGE = "a la mention B."
          Else:
               If NOTE > OU = 12 Then
                MESSAGE = "a la mention AB."
                Else:
                    If NOTE > OU = 10 Then
                    MESSAGE = "a la mention Passable."
                    Else: MESSAGE = "est ajourné."
                    End If
                End If
            End If
    End If
    
    'Affichage du message final
    MsgBox ("L'étudiant " & " " & NOM & " " & PRENOM & " " & MESSAGE)
    
End Sub

2 réponses

Messages postés
15808
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 juin 2021
1 502
Bonjour,

Sub main()
Dim N1 As Single
Dim N2 As Single
Dim EXAM As Single
Dim MOY As Single
Dim MESSAGE As String
Dim NOM As String
Dim PRENOM As String
'Saisie des données
NOM = InputBox("Saisissez le nom : ")
PRENOM = InputBox("Saisissez le prénom : ")
N1 = InputBox("Saisissez la première note de " & NOM)
N2 = InputBox("Saisissez la seconde note de " & NOM)
EXAM = InputBox("Saisissez la note d'examen de " & NOM)

'Calcul de la moyenne
MOY = (N1 + N2 + EXAM) / 3
If MOY > EXAM Then
NOTE = MOY
Else
NOTE = EXAM
End If

'Calcul de la mention
If NOTE >= 16# Then
MESSAGE = "a la mention TB."
ElseIf NOTE >= 14# Then
MESSAGE = "a la mention B."
ElseIf NOTE >= 12# Then
MESSAGE = "a la mention AB."
ElseIf NOTE >= 10# Then
MESSAGE = "a la mention Passable."
Else
MESSAGE = "est ajourné."
End If
'Affichage du message final
MsgBox ("L'étudiant " & " " & NOM & " " & PRENOM & " " & MESSAGE)

End Sub
Messages postés
3
Date d'inscription
lundi 22 décembre 2014
Statut
Membre
Dernière intervention
22 décembre 2014

Merci!!! Ca fonctionne nickel!!!
Je croyais qu'il fallait autant de Endif que de Else, j'ignorais qu'on n'était pas obligé de mettre OU entre > et =, et notre guide papier n'indique même pas le ElseIf...
Encore merci du coup de main, trop gentil ;)
Bonnes fêtes de fin d'année!
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
842
Bonjour,

remplace les > OU = par >=

tu pourrais aussi remplacer
MOY = (N1 + N2 + EXAM) / 3
If MOY > EXAM Then
NOTE = MOY
Else: NOTE = EXAM
End If

par
NOTE = WorksheetFunction.Max(EXAM, (N1 + N2 + EXAM) / 3)

mais ce n'est pas une obligation.

cdlt
Messages postés
3
Date d'inscription
lundi 22 décembre 2014
Statut
Membre
Dernière intervention
22 décembre 2014

Merci pour l'avis!
Bonnes fêtes de fin d'année ;)