EXCEL et VBA- niveau débutante

Résolu/Fermé
Patoche4944 Messages postés 3 Date d'inscription lundi 22 décembre 2014 Statut Membre Dernière intervention 22 décembre 2014 - Modifié par crapoulou le 22/12/2014 à 11:24
Patoche4944 Messages postés 3 Date d'inscription lundi 22 décembre 2014 Statut Membre Dernière intervention 22 décembre 2014 - 22 déc. 2014 à 11:50
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

f894009 Messages postés 16724 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 octobre 2022 1 659
22 déc. 2014 à 11:31
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
0
Patoche4944 Messages postés 3 Date d'inscription lundi 22 décembre 2014 Statut Membre Dernière intervention 22 décembre 2014
22 déc. 2014 à 11:49
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!
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 850
22 déc. 2014 à 11:34
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
0
Patoche4944 Messages postés 3 Date d'inscription lundi 22 décembre 2014 Statut Membre Dernière intervention 22 décembre 2014
22 déc. 2014 à 11:50
Merci pour l'avis!
Bonnes fêtes de fin d'année ;)
0