Tester des conditions sur plusieurs lignes
betou34
Messages postés
3
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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:
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.
.
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.
.
A voir également:
- Tester des conditions sur plusieurs lignes
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Partager des photos en ligne - Guide
- Tester composant pc - Guide
- Tester compatibilité windows 11 - Guide
3 réponses
Bonjour,
Pour faire ce que tu demandes... il me semble qu'une simple formule basée sur des SI ... devrait suffire ...
Pour faire ce que tu demandes... il me semble qu'une simple formule basée sur des SI ... devrait suffire ...
Bonjour,
Tu pourrais faire cela sans VBA avec des formules basiques...
c'est un exercice qu'on te demande de faire en VBA ?
Tu pourrais faire cela sans VBA avec des formules basiques...
c'est un exercice qu'on te demande de faire en VBA ?
Bonjour,
Tu pourrais essayer ceci
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.
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.