Affecter une note grâce à une inputbox - Excel VBA
Résolu/Fermé
Naririne
Messages postés
106
Date d'inscription
vendredi 9 août 2013
Statut
Membre
Dernière intervention
9 février 2022
-
Modifié par pijaku le 3/11/2014 à 08:28
Naririne Messages postés 106 Date d'inscription vendredi 9 août 2013 Statut Membre Dernière intervention 9 février 2022 - 6 nov. 2014 à 15:29
Naririne Messages postés 106 Date d'inscription vendredi 9 août 2013 Statut Membre Dernière intervention 9 février 2022 - 6 nov. 2014 à 15:29
A voir également:
- Affecter une note grâce à une inputbox - Excel VBA
- Déplacer une colonne excel - Guide
- Liste déroulante excel - Guide
- Calculer une moyenne sur excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Redmi note 13 5g test - Accueil - Téléphones
8 réponses
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
2 nov. 2014 à 10:37
2 nov. 2014 à 10:37
Bonjour,
Tu peux résoudre ton problème sans utiliser VBA !
une validation de données type liste avec tes notes de 0 à20 ce qui empêche des saisies farfelues
un tableau annexe facile à modifier avec en colonnes les seuils 0,5 etc. et à coté l'appréciation...
une RECHERCHEV dans la colonne C.
toujours penser excel avant de penser VBA ! ;o)
Tu peux résoudre ton problème sans utiliser VBA !
une validation de données type liste avec tes notes de 0 à20 ce qui empêche des saisies farfelues
un tableau annexe facile à modifier avec en colonnes les seuils 0,5 etc. et à coté l'appréciation...
une RECHERCHEV dans la colonne C.
toujours penser excel avant de penser VBA ! ;o)
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
5 nov. 2014 à 10:39
5 nov. 2014 à 10:39
Bonjour le fil, bonjour le forum,
Une proposition VBA :
Une proposition VBA :
Sub macro_appreciations()
Dim NE As Integer 'déclare la variable NE (Nombre d'Élèves)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TC As Variant 'déclare la variable TC (Tableau de cellules)
Dim BN As Variant 'déclare la variable BN (Boîte Note)
Dim note As Integer 'déclare la variable note
NE = Cells(Application.Rows.Count, 1).End(xlUp).Row - 1 'définit le nombre d'élèves (pourquoi -1 ?)
TC = Range("A1:C" & NE) 'définit le tableau de cellules TC
For I = 2 To UBound(TC, 1) 'boucle sur toutes les ligne du tableau TC (en partant de la seconde)
'condition 1 : si la valeur en colonne 1 de la ligne est vide ou si elle est inférieure à 0 ou supérieure à 20
If TC(I, 2) = "" Or TC(I, 2) < 0 Or TC(I, 2) > 20 Then
Cells(I, 2).Interior.ColorIndex = 3 'colore la cellule de rouge
NV: 'étiquette (Non Valide)
BN = Application.InputBox("Veuillez saisir une note valide !", Type:=1) 'déffinit la boîte d'entrée BN
If BN = False Then 'condition 2 : si bouton "Annuler" dans la boîte d'entrée BE
'si "Non" au message retourne à la boîte d'entrée (via l'étiquette NV), si "Oui" au message passe à la note suivante (via l'étiquette "suite")
If MsgBox("L'élève " & Cells(I, 1).Value & " n'est pas noté ! Voulez-vous continuer ?", vbYesNo, "ATTENTION") = vbNo Then GoTo NV Else GoTo suite
End If 'fin de la condition 2
If BN < 0 Or BN > 20 Then MsgBox "Note non valide !": GoTo NV 'condition 3 : si la note n'est pas valide, retoure à la boîte d'entrée (via l'étiquette "NV")
Cells(I, 2).Value = BN 'place la note dans la cellule
Cells(I, 2).Interior.ColorIndex = xlNone 'supprime la couleur rouge de la cellule
End If 'fin de la condition 3
note = Cells(I, 2).Value 'définit la variable note
Select Case note 'action en fonction de la note
Case 0 'cas zéro
Cells(I, 3).Value = "Nul" 'appréciation dans la cellule en colonne 3
Case 1 To 5 'de 1 a 5
Cells(I, 3).Value = "Très Insuffisant" 'appréciation dans la cellule en colonne 3
Case 6 To 9 'de 6 à 9
Cells(I, 3).Value = "Insuffisant" 'appréciation dans la cellule en colonne 3
Case 10 To 15 'de 10 à 15
Cells(I, 3).Value = "Bien" 'appréciation dans la cellule en colonne 3
Case 16 To 19 'de 19 à 19
Cells(I, 3).Value = "Très Bien" 'appréciation dans la cellule en colonne 3
Case 20 'cas 20
Cells(I, 3).Value = "Excellent" 'appréciation dans la cellule en colonne 3
End Select 'fin de l'action en fonction de la note
suite: 'étiquette
Next I 'prochaine ligne du tableau TC
End Sub
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
Modifié par michel_m le 5/11/2014 à 11:02
Modifié par michel_m le 5/11/2014 à 11:02
en attendant
Nota pour ton prof : les goto sont autorisés et utilisés dans la gestion des erreurs
Michel
Nota pour ton prof : les goto sont autorisés et utilisés dans la gestion des erreurs
Option Explicit '---- Sub macro_appreciations() Dim nbeleves As Byte Dim i As Byte Dim note As Single nbeleves = Range("A1048576").End(xlUp).Row For i = 1 To nbeleves On Error GoTo erreur 1: note = InputBox(prompt:="note de " & Cells(i, "A") & " ? ") Select Case note Case Is = 0 Cells(i, "C") = "nul" Case Is <= 5 Cells(i, "C") = "très insuffisant" Case Is <= 9 Cells(i, "C") = "insuffisant" Case Is <= 15 Cells(i, "C") = "bien" Case Is <= 19 Cells(i, "C") = "très bien" Case Is <= 20 Cells(i, "C") = "excellent" Case Else MsgBox "saisir une note entre 0 et 20", vbCritical GoTo 1 End Select Cells(i,"B")=note Next i Exit Sub erreur: MsgBox "saisie d'un texte non valable", vbCritical Resume 1 End Sub
Michel
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
5 nov. 2014 à 11:49
5 nov. 2014 à 11:49
Bonjour Michel,
Comment faites-vous pour afficher le code tel que vous le faites ?
Comment faites-vous pour afficher le code tel que vous le faites ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
Modifié par pijaku le 5/11/2014 à 12:00
Modifié par pijaku le 5/11/2014 à 12:00
Salut,
Tu as, à côté de la balise code <> une liste de choix te permettant de choisir ton langage de programmation. Sélectionne Basic.
Les balises sont :
<code basic></code>
Le mode d'emploi (au cas ou) est ICI.
Cordialement,
Pijaku
Tu as, à côté de la balise code <> une liste de choix te permettant de choisir ton langage de programmation. Sélectionne Basic.
Les balises sont :
<code basic></code>
Le mode d'emploi (au cas ou) est ICI.
Cordialement,
Pijaku
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
5 nov. 2014 à 12:07
5 nov. 2014 à 12:07
Merci Pijaku !
Naririne
Messages postés
106
Date d'inscription
vendredi 9 août 2013
Statut
Membre
Dernière intervention
9 février 2022
12
5 nov. 2014 à 08:57
5 nov. 2014 à 08:57
Bonjour Michel_M
Merci d'avoir répondu à mes questions !
Oui on peut le résoudre facilement par Excel, je l'ai déjà fait :)
Mais dans le cadre d'un cours à la fac, on nous demande de passer par du VBA pour résoudre ce problème. La plus grosse partie du code est faite. Il ne me reste plus qu'à travailler sur les petits pièges. Et c'est là où je patine :(
Merci d'avoir répondu à mes questions !
Oui on peut le résoudre facilement par Excel, je l'ai déjà fait :)
Mais dans le cadre d'un cours à la fac, on nous demande de passer par du VBA pour résoudre ce problème. La plus grosse partie du code est faite. Il ne me reste plus qu'à travailler sur les petits pièges. Et c'est là où je patine :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
5 nov. 2014 à 10:03
5 nov. 2014 à 10:03
RE, le prof notr t(il qu'avec des chiffres rond (6,7 ...) ou possibilité de 5,5 ou 8,75....?
Naririne
Messages postés
106
Date d'inscription
vendredi 9 août 2013
Statut
Membre
Dernière intervention
9 février 2022
12
Modifié par Naririne le 5/11/2014 à 10:06
Modifié par Naririne le 5/11/2014 à 10:06
Toutes les possibilités sont les bienvenues :)
Merci
Peace !
Merci
Peace !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
Modifié par pijaku le 5/11/2014 à 11:53
Modifié par pijaku le 5/11/2014 à 11:53
Bonjour tout le monde,
J'arrive après la guerre donc c'est beaucoup plus simple...
Une solution, honteusement pompée sur celle de Michel ;-), par fonction avec des tests complémentaires (séparateur décimal et boucle tant que note incorrecte) :
ps : salut Michel, comment va?
🎼 Cordialement,
Franck 🎶
J'arrive après la guerre donc c'est beaucoup plus simple...
Une solution, honteusement pompée sur celle de Michel ;-), par fonction avec des tests complémentaires (séparateur décimal et boucle tant que note incorrecte) :
Option Explicit '---- Sub macro_appreciations() Dim nbeleves As Byte Dim i As Byte Dim Note As Single Dim Quoi As String, Par As String Par = Application.International(xlDecimalSeparator) Quoi = IIf(Par = ",", ".", ",") nbeleves = Range("A1048576").End(xlUp).Row For i = 1 To nbeleves Do Note = Replace(InputBox(prompt:="note de " & Cells(i, "A") & " ? "), Quoi, Par) If Note < 0 Or Note > 20 Then MsgBox "saisir une note entre 0 et 20", vbCritical Loop While Note < 0 Or Note > 20 Cells(i, "B") = Note Cells(i, "C") = Appreciation(Note) Next i End Sub Function Appreciation(sgNote As Single) As String Select Case sgNote Case Is = 0 Appreciation = "nul" Case Is <= 5 Appreciation = "très insuffisant" Case Is <= 9 Appreciation = "insuffisant" Case Is <= 15 Appreciation = "bien" Case Is <= 19 Appreciation = "très bien" Case Is <= 20 Appreciation = "excellent" Case Else Appreciation = "Erreur inconnue" End Select End Function
ps : salut Michel, comment va?
🎼 Cordialement,
Franck 🎶
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
5 nov. 2014 à 12:04
5 nov. 2014 à 12:04
Bonjour Frank
comment va?
bof! pas terrible...
comment va?
bof! pas terrible...
Naririne
Messages postés
106
Date d'inscription
vendredi 9 août 2013
Statut
Membre
Dernière intervention
9 février 2022
12
6 nov. 2014 à 15:29
6 nov. 2014 à 15:29
Salut tout le monde !
Merci beaucoup pour vos réponses !!
J'ai essayé vos codes, en plus d'être juste ce que je voulais, ils m'ont permis d'apprendre des choses en VBA !
Merci encore !
Merci beaucoup pour vos réponses !!
J'ai essayé vos codes, en plus d'être juste ce que je voulais, ils m'ont permis d'apprendre des choses en VBA !
Merci encore !