VBA Macro
Résolu
Ghinoa1
Messages postés
1
Statut
Membre
-
Ghinoa1 -
Ghinoa1 -
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 :)
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 :)
A voir également:
- VBA Macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Excel compter cellule couleur sans vba - Guide
- Arreter une macro vba ✓ - Forum VB / VBA
3 réponses
Bonjour Ghinoa1 et bienvenue sur le Forum,
Tu peux écrire :
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
Bonjour
Pourquoi du VBA ?
par formule à tirer vers le bas
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
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 ExplicitMichel
'------
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