Tester des conditions sur plusieurs lignes

Bonjour,
Je suis déjà passé ici il y a quelques semaine et j'ai pu trouver la solution et je remercie tous ce qui m'ont pu m'aider. Là, je suis confronté à un autre problème. Je souhaite faire un test sur toutes les lignes de la colonne 1. Lorsque la ligne i de la colonne 1 remplit une des conditions, alors, dans la ligne i de la colonne 2 sera affectée la valeur correspondante à la condition rempli. J'ai pu écrire quelques programme qui marchent en partie car le problème c'est queseule la première ligne est testé et le le reste des lignes ne le sont pas. Donc, la colonne colonne est seulement remplit par la valeur correspondante à la ligne 1. Je ne sais pas comment faire pour que le test continue jusqu'à la dernière ligne. Voici un exemple à quoi ressemble à peu près mon problème à part que ma base de donnée comporte 4500 lignes à peu près.
colonne 1 colonne 2
12.5
14
16
8.5
11
6
13
12
14
Les conditions sont les suivantes:
si la valeur de la ligne i de la colonne 1 est > 15, alors dans la colonne 2 est inscrit "excellent";
si c'est compris entre 14 et 15.99, alors dans la ligne i de la colonne 2 sera inscrit "bien" et ainsi de suite. Dans mon cas, le code teste seulement la première ligne et reporte la valeur correspondante de la condition dans la ligne 1 de la colonne 2. Les autres lignes de la colonne 2 sont remplies mais avec la valeur correspondante de la condition dans la ligne 1.
Normallement, on doit un résultat de la sorte :
colonne 1 colonne 2
12.5 "assez bien"
14 "bien"
16 "excellent"
8.5 "insuffisant"
11 "moyen"
6 "excecrable"
13 "assez bien"
12 "assez bien"
14 "bien"
Mais lorsqu'on éxécute le programme, on obtient :
colonne 1 colonne 2
12.5 "assez bien"
14 "assez bien"
16 "assez bien"
8.5 "assez bien"
11 "assez bien"
6 "assez bien"
13 "assez bien"
12 "assez bien"
14 "assez bien"

Ci-après les codes que j'ai employé mais qui ne marchent pas tous les deux:

Sub commentaires_notes()
    'Variables
    Dim c As Integer, commentaire As String
   For Each c In Worksheets("Feuil1").Range("A2:A10")
    'Commentaire en fonction de la note
    Select Case c    ' <= la valeur à tester (ici, la note)
    Case Is > 15        
       commentaire = "Excellent"
    Case 14 To 15.99        
       commentaire = "Bien"
    Case 12 To 13.99        
       commentaire = "assez bien"
    Case 10 To 11.99        
       commentaire = " moyen"
    Case 8 To 9.99      
       commentaire = "Mauvais"
    Case Is < 8        
       commentaire = " exécrable"
    End Select
   Next c
    'Commentaire en B1
    Range("B2:B11") = commentaire
    
End Sub

Sub comm_not()
'Variables
 For Each c In Worksheets("Feuil1").Range("A2:A10")
    'Commentaire en fonction de la note
        If c.Value > 16 Then   ' <= la valeur à tester (ici, la note)
            ' <= si la valeur = 6
       commentaire = "Excellent"
        ElseIf c.Value > 14 And c.Value < 16 Then   
       commentaire = "Bien"
        ElseIf c.Value > 12 And c.Value < 14 Then        
       commentaire = "satisfaisant"
        ElseIf c.Value > 10 And c.Value < 12 Then       
       commentaire = "moyen"
       ElseIf c.Value > 8 And c.Value < 10 Then   
       commentaire = "Mauvais"
        ElseIf c.Value < 8 Then      
       commentaire = "exécrable"
      End If
      'Commentaire en B1
    Range("B2:B11") = commentaire
 Next c
End Sub

Sub com_n()
ligne = Range("A2:A11").Row
For i = 2 To ligne Step 1
note = Cells(i, 1).Value
'Commentaire en fonction de la note
    Select Case note    ' <= la valeur à tester (ici, la note)
    Case Is > 15       
       commentaire = "Excellent "
    Case 14 To 15.99        
       commentaire = "Bien"
    Case 12 To 13.99      
       commentaire = "assez bien"
    Case 10 To 11.99       
       commentaire = "moyen"
    Case 8 To 9.99     
       commentaire = "Mauvais"
    Case Is < 8      
       commentaire = "exécrable"
    End Select
 Next i
    'Commentaire en B1
    Range("B2:B11") = commentaire
End Sub


Merci d'avance pour tous ceux qui peuvent m'aider.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

3 réponses

  1. Modérateur
    Bonjour,
    Pour faire ce que tu demandes... il me semble qu'une simple formule basée sur des SI ... devrait suffire ...

    0
    1. Contributeur
      Bonjour,
      Tu pourrais faire cela sans VBA avec des formules basiques...

      c'est un exercice qu'on te demande de faire en VBA ?
      0
      1. Bonjour,

        Tu pourrais essayer ceci
        Sub commentaires_notes()
            'Variables
            Dim c As Range, commentaire As String
           For Each c In Worksheets("Feuil1").Range("A2:A10")
            'Commentaire en fonction de la note
            Select Case c.Value    ' <= la valeur à tester (ici, la note)
            Case Is >= 16
               commentaire = "Excellent"
            Case 14 To 15.99
               commentaire = "Bien"
            Case 12 To 13.99
               commentaire = "assez bien"
            Case 10 To 11.99
               commentaire = " moyen"
            Case 8 To 9.99
               commentaire = "Mauvais"
            Case Is < 8
               commentaire = " exécrable"
            End Select
            Cells(c.Row, c.Column + 1).Value = commentaire
           Next c
            
        End Sub


        En gros ta variable commentaire est écrasé a chaque itération de C
        Et à la fin, dans toute ta colonne B, tu inscrit commentaire qui contient la dernière valeur qui lui était assigné.
        Donc, il faut écrire le commentaire avant de passer à la prochaine ligne. avant Next C.
        -1