Macro pour compléter un tableau
Bonjour à tous,
je m'appelle Bertrand, je suis professeur de mathématiques et j’aurais besoin d’un coup de main pour réaliser un tableau de notation par compétence.
Vous trouverez ci-dessous le fichier excel dont je parle.
Dans la première feuille « Note élève », on trouve les éléments suivants :
Colonne A : « attendus » pour chaque question.
Colonne B : Barême pour chaque attendu
Colonne C : Compétence de l’attendu
Colonne D, E, F etc…… : évaluation de l’attendu pour chaque élève (entre 0 et 3)
Les attendus sont ce que je veux voir apparaître dans la copie de l’élève. Chacun de ces attendus « appartient » à une des grandes compétences que l’élève doit développer dans ma matière (s’approprier, analyser, réaliser, valider et communiquer). Chaque attendu est ensuite évalué. L'ensemble donne une note pour chaque élève
En plus d’une note pour chaque question et d’une note globale de la copie, il faudrait que l’élève ait une note pour chaque compétence. C’est dans le deuxième tableau de la feuille « Note élève » que je souhaite faire apparaître cette notation. C’est pour remplir ce deuxième tableau qu’intervient la deuxième feuille de mon fichier : Note par compétence.
Dans cette deuxième feuille, on trouve deux tableaux.
- Le premier, intitulé « barême », me permet de savoir le nombre de point que j’ai attribué pour chaque compétence. La dernière ligne de ce tableau me permet de compléter la colonne barême de mon tableau « Note élève » de la première feuille de calcul.
- Le deuxième tableau, intitulé « Résultat élève » me permet de déterminer, pour un seul élève, le nombre de point qu’il a obtenu pour chacune des 5 grandes compétences. La dernière ligne de ce tableau (surlignée en jaune) me permet de compléter la colonne correspondant à l’élève de mon tableau « Note élève » de la première feuille de calcul.
Voilà pour la présentation de ce qui est existant. C’est certainement améliorable (d’ailleurs je reviendrais certainement vous embêter à ce sujet plus tard) mais ce n’est pour l’instant pas le sujet.
Ma demande est la suivante : je voudrais maintenant créer une macro qui va, élève par élève, compléter le dernier tableau dont j’ai parlé ci-avant (celui intitulé « Résultat élève ») et qui viendrait ensuite consigner les résultats (ceux de la dernière ligne, celle surlignée en jaune) dans le deuxième tableau de la feuille 1. Je souhaite me débrouiller le plus possible pour faire cette macro. Je suis débutant en vba mais je suis plutôt débrouillard. Je pense trouver beaucoup d'information sur le net pour faire ce travail mais je ne sais même pas par quoi commencer et quoi chercher.... Je souhaiterais que vous puissiez m'orienter dans mes recherches, éventuellement me proposer des cours ou des tutos me permettant de me lancer dans ce taf.
J'espère avoir été clair dans ma présentation et ma demande.
Merci pour le temps que vous accorderez à ma demande.
Bonjour,
Un début de réponse.
Réalisé avec Power Query.
A te relire.
Cdlt.
Bonsoir
Un premier jet avec une proposition par formule.
- Allez dans la feuille "Note par compétence"
- cliquez sur I23 pour choisir le nom de l'élève
J'ai laissé en place vos tableaux entre colonne C et G et refais deux autres juste à coté (colonnes I à M)
A voir si le deuxième tableau dans votre feuille "Note éleve" ne doit pas évoluer en ne prenant qu'un seul élève à la fois. Je n'ai pas encore touché à ce tableau.
Avec celle de Jean Eric vous avez deux solutions
Cordialement
Bonsoir,
tout d'abord, merci d'avoir pris du temps pour regarder mon problème.
Jean Eric, j'ai du mal à voir ce que tu as fait. Tu as créé une macro ? Si oui, comment accéder au code ? C'est quoi Power Query
Dan, ce que tu proposes ne permet pas de remplir le 2ème tableau de la feuille 1.
De mon côté j'ai bossé sur le sujet ce soir, et je crois bien que j'ai atteint ce que je voulais faire.
Il faut que je peaufine encore mais ça fait ce que je veux.
Si jamais ça vous intéresse, voila le code que j'ai pondu
Si vous avez des remarques, ça m'intéresse.
Encore merci.
Bonne soirée
Sub Macro3()
Dim derniereColonne As Integer
derniereColonne = Cells(6, Columns.Count).End(xlToLeft).Column 'recherche la dernière colonne complétée du tableau
Dim j As Integer
j = 4 '4 est le numéro de la première colonne dans laquelle il y a un élève
Do While (j < derniereColonne + 1)
Range(Cells(6, j), Cells(18, j)).Copy Worksheets("Note par compétence").Range("B26") 'copier coller de l'évaluation de chaque item vers le tableau de note par compétence
Dim k As Integer
Dim m As Integer
k = 3 'colonne début tableau de note par compétence (feuille 2)
m = 24 'ligne début tableau recap note par compétence (feuille 1)
Do While (k <> 8) 'k=3 + 5 compétences ça fait 8
Worksheets("Note par compétence").Cells(40, k).Copy '40 est la ligne du tableau de note par compétence à recopier
Worksheets("Note élève").Cells(m, j).Select
Selection.PasteSpecial Paste:=xlPasteValues
k = k + 1
m = m + 1
Loop
j = j + 1
Loop
End SubBonjour,
Je trouve bizarre que tous les élèves obtiennent le même résultat mébon c'est toi le prof !
Ta macro optimisée :
Sub Macro3()
Dim Arr, iLC%, j%, k%, m%, WsE As Worksheet
Set WsE = Worksheets("Note élève")
With WsE
iLC = .Cells(6, .Columns.Count).End(xlToLeft).Column 'recherche la dernière colonne complétée du tableau
For j = 4 To iLC '4 est le numéro de la première colonne dans laquelle il y a un élève
Arr = .Range(Cells(6, j), .Cells(18, j)).Value
Worksheets("Note par compétence").Range("B26:B38") = Arr 'copier coller de l'évaluation de chaque item vers le tableau de note par compétence
m = 24 'ligne début tableau recap note par compétence (feuille 1)
For k = 3 To 7
.Cells(m, j) = Worksheets("Note par compétence").Cells(40, k).Value
m = m + 1
Next
Next
End With
End SubA+
Bonjour
Dan, ce que tu proposes ne permet pas de remplir le 2ème tableau de la feuille 1.
Oui je savais je vous l'ai précisé dans mon post.
Vu la réponse via Power query proposée par Jean Eric, je n'ai pas avancé sur ce point mais vu votre retour. Voici avec le tableau.
Les données se placent dans la tableau entre lignes 23 et 28 de la feuille selon votre choix dans la cellule J23 de la feuille "Note de compétence"
Cordialement