EXCEL et VBA- niveau débutante

Résolu
Patoche4944 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Patoche4944 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. Patoche4944 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  2. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
     
    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
    1. Patoche4944 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci pour l'avis!
      Bonnes fêtes de fin d'année ;)
      0