VBA Macro

Résolu
Bonjour,

j'ai un souci au niveau de la répétabilité de l'opération suivante que j'aimerai faire pour les 50 premières lignes et non pas seulement la ligne 5.

Sub Mention()

Dim Note As Integer
Dim Mention As String
Note = Range("B5")
If Note = 0 Then
Mention = "Nul"
ElseIf Note >= 1 And Note < 6 Then
Mention = "Moyen"
ElseIf Note >= 6 And Note < 11 Then
Mention = "Passable"
ElseIf Note >= 11 And Note < 16 Then
Mention = "Bien"
ElseIf Note >= 16 And Note < 20 Then
Mention = "Très Bien"
Else
Mention = "Excellent"
End If
Range("C5") = Mention

End Sub

Merci d'avance pour l'aide :)

3 réponses

  1. Merci Messieurs pour vos réponses!
    0
    1. Contributeur
      Bonjour

      Pourquoi du VBA ?

      par formule à tirer vers le bas
      =SI(B5="";"";INDEX({"nul";"moyen";"passable";"bien";"très bien";"excellent"};EQUIV(B5;{0;1;6;11;16;20};1)))

      on pourra également le faire en réalisant un tableau de concordance note/mention et utiliser RECHERCHEV

      Si on tient au VBA, utiliser SELECT CASE plutôt que IF....ELSIF où d'ailleurs linterval >=...< est inutile car on progresse dans les notes et l'opérateur "inférieur à" suffit

      autre procédure VBA histoire de traduire ma formule par du VBA pour collaborer quand même

      Option Explicit
      '------
      Sub mentionner()
      Dim Lig As Byte, Note As Variant, Echelon As Byte

      Application.ScreenUpdating = False
      For Lig = 5 To 50
      Note = Cells(Lig, "B")
      If Note <> "" Then
      Echelon = Evaluate("Match(" & Note & ", {0,1,6,11,16,20}, 1)")
      Cells(Lig, "C") = Choose(Echelon, "nul", "moyen", "passable", "bien", "très bien", "excellent")
      End If
      Next
      End Sub
      Michel
      1
      1. Bonjour Ghinoa1 et bienvenue sur le Forum,

        Tu peux écrire :

        Sub Mention()
        
        Dim Note As Integer
        Dim Mention As String
        Dim n°L As Long
        
        For n°L = 5 To 50  ' ou 1 to 50 
          Note = Cells(n°L, "B")
          If Note = 0 Then
            Mention = "Nul"
          ElseIf Note >= 1 And Note < 6 Then
            Mention = "Moyen"
          ElseIf Note >= 6 And Note < 11 Then
            Mention = "Passable"
          ElseIf Note >= 11 And Note < 16 Then
            Mention = "Bien"
          ElseIf Note >= 16 And Note < 20 Then
            Mention = "Très Bien"
          Else
            Mention = "Excellent"
          End If
          Cells(n°L, "C") = Mention
        Next n°L
        
        End Sub
         
        1