Visualiser l'avancement des compétences de mes élèves

Bonjour,

Je souhaite essayer de traiter "numériquement" l'évolution des compétences(Ci) de mes élèves(Ek) dans différents domaines (Dj).

chaque élève aura un classeur (Ek) avec deux feuilles Français et Maths. Dans chaque feuille, les compétences sont listées en colonne et les domaines en ligne. (CompétencesFichierEleves)

Je souhaite avoir un récapitulatif de l'avancement de mes élèves dans un fichier où chaque domaine sera une feuille, chaque élève une ligne, et les compétences en colonne.

Comme j'ai 29 élèves et que je ne veux pas faire 29 élèves x 8 domaines copier-coller avec liaison, est-ce qu'un petit programme en VBA pourrait m'apporter la solution ou bien dois-je laisser tomber? il me faudrait un copier-coller qui lie mes fichiers élèves à mes lignes-élèves dans mon fichier de synthèse et ce pour chaque feuille-domaine. Pour l'instant je l'ai fait pour un élève et 1 domaine et ça fonctionne mais voilà je n'ai pas envie de faire 232 copier-collé!

J'ai fait attention à mettre mes donnée en forme, à protéger les cellules...mais j'hésite à me lancer dans l'apprentissage du VBA.

Merci pour votre avis?

CMONT

Bonjour et bienvenue sur le forum

Tu écris :

Pour l'instant je l'ai fait pour un élève et 1 domaine et ça fonctionne

Peux-tu nous montrer ce que tu as fais ? On comprendrait peut-être mieux ce que tu souhaites.

Bye !

J'ai joint le fichier prof lié à mon fichier élève. précédemment envoyé.

Merci!

Bonjour,

Pour ma part, j'éviterai de créer des liens entre classeurs... VBA permet justement de l'éviter et d'alourdir les classeurs avec trop de formules.

Les conditions :

- le nom du classeur élève doit inclure le nom de l'élève (tel qu'il se trouve dans la colonne B du fichier Prof, exemple :

CompetencesFichierEleveDaphné.xlsx

  • le nom du fichier Prof n'a pas d'importance, mais c'est lui qui contiendra le code, donc fichier .xlsm
  • les feuilles : Mots, Phrases, Textes... du fichier Prof dans le même ordre que ces rubriques sur la feuille élève (c'est le cas)
  • nombre de colonnse identique sur les 2 classeurs et se correspondant (ce n'est pas le cas !)
  • une seule ligne date sur le classeur Prof pour Mots laisse penser que les dates seront les mêmes pour tous les élèves ? Mais cette ligne est absente des feuilles suivantes ? (à aligner)
  • la feuille J'écris déroge à la structure générale : 4 lignes par élève au lieu de 3 et décalage colonne.

On peut à la rigueur gérer une exception sur le nombre de lignes de la dernière rubrique mais il est souhaitable que la cellule initiale sur toutes les feuille soit C5 et la plage à récupérer comporte 37 colonnes...

Méthode simple : On défile de 3 lignes en 3 lignes sur la première feuille, on récupère le nom élève, on définit l'adresse de plage à servir, on constitue le nom du classeur à ouvrir, on l'ouvre, sur ce classeur on définit l'adresse de la 1re plage à récupérer et on boucle à partir de D7 de 5 lignes en 5 lignes : on récupère successivement les valeurs de chaque plage qu'on affecte directement à la plage cible en bouclant simultanément sur les feuilles du classeur Prof (sans formules donc, et sans copier-coller, directement!).

Il reste à gérer l'exception de la 4e feuille si conservée, et à définir la source sur laquelle est alimentée la ligne date commune...

Cordialement.

Boisoir,

Merci beaucoup. Je vais donc me mettre à VBA, j'espère que ce n'est pas trop compliqué! Et que surtout je ne vais pas y perdre trop de temps...

Ma feuille jecris est effectivement différente et c'est normale: les compétences ne sont pas validées de la même façon...

Pour les dates, je vais supprimer ma ligne de date. Initialement je pensais rentrer une formule du style "si ma cellule compétence est vide la date reste vide sinon la date prend la valeur d'aujourd'hui" ce que j'ai fait dans les fichier élève. Mais comme dans mon fichier prof je faisais un copier -coller avec liaison et que du coup cela me rentre la valeur 0, cette ligne de date ne fonctionne plus. En fait ce que je souhaite, c'est que dès que la cellule compétence n'est plus vide, soit inscrite la date du jour.

Desolée mais je n'y connais rien en VBA -> on défile je cherche dans le langage défiler de 3 lignes en 3 lignes? Je cherche comment récupérer le nom élève? est-ce que vos indications sont faciles à exécuter dès que je j'ai un peut plus compris comment fonctionne ce langage? Tous les mots en gras sont des actions réalisables en VBA?

Merci

Méthode simple : On défile de 3 lignes en 3 lignes sur la première feuille, on récupère le nom élève, on définit l'adresse de plage à servir, on constitue le nom du classeur à ouvrir, on l'ouvre, sur ce classeur on définit l'adresse de la 1re plage à récupérer et on boucle à partir de D7 de 5 lignes en 5 lignes : on récupère successivement les valeurs de chaque plage qu'on affecte directement à la plage cible en bouclant simultanément sur les feuilles du classeur Prof (sans formules donc, et sans copier-coller, directement!).

Il reste à gérer l'exception de la 4e feuille si conservée, et à définir la source sur laquelle est alimentée la ligne date commune...

Si tu ignorais VBA jusqu'ici, je te vois mal te lancer d'emblée sans en connaître au moins les rudiments et quelques notions de base, et comment manipuler les objets Excel avec du code. Utiliser des variables et des boucles demande quelques connaissances et un peu d'entrainement. Le forum est là pour t'assister...

Si tu tiens à réaliser toi-même la procédure, je peux te fournir les explications nécessaires sous une forme adaptée à la phase passage de la conception générale à la conception appliquée : cerner les objets à utiliser, sous quelle forme les appréhender dans le code et quelles variables permettront les manipulations prévues, ce pour chaque élément à considérer, puis définition des différentes boucles : pour parcourir les classeurs à ouvrir et refermer après traitement, pour parcourir simultanément (pour chaque classeur élève), les plages source et les feuilles cibles de ton classeur prof, et regroupement de tous ces éléments pour en faire une procédure fonctionnelle... (ou plusieurs ! il n'y a jamais de solution unique en VBA)

Pas de problème a-priori pour apposer les dates dans le même mouvement...

Cordialement.

Bonsoir,

Si cela me fait gagner du temps par la suite, je suis prête à m'y mettre... Je ne connais effectivement pas VBA, juste réalisé qqs macros quand j'en avais besoin.

Je comptais acheter le livre proposé aux éditions ENI... votre avis?

Je dégrossis mon problème en bidouillant d'abord sur des exemples, et je reste en version papier en classe pour l'instant. Je suis directrice d'école, en charge d'un CM2 et je n'ai donc pas un temps énorme...

Je garde précieusement les conseils comme "pas à pas".

CMONTMORY

Je ne me tiens pas au courant de tout ce qui est publié sur VBA, mais sauf cas particulier, tu trouveras toujours les mêmes éléments de base dans les ouvrages présentant la programmation VBA couplée avec Excel et destinés généralement aux débutants (bien qu'on puisse toujours y apprendre quelque chose tout en n'étant plus débutant...)

Tu peux aussi trouver généralement des cours VBA sur les sites spécialisés tels que celui-ci : Excel-Pratique, Excel Download, Developpez,...) ainsi que des tutos approfondissant tel ou tel aspect. Il est indispensable d'acquérir quelques rudiments sur le langage de programmation utilisé et sa syntaxe.

A connaître absolument : l'éditeur VBA, comment on y accède, ses différents composants, pricipalement l'explorateur de projets qui permet d'accéder aux différents modules (modules standard, modules d'objets [feuilles, classeur]) que tu auras à utiliser pour programmer (écrire le code). Apprendre à utiliser l'aide est aussi un élément nécessaire, on a toujours besoin de s'y référer pour élucider un point de syntaxe, et il est judicieux de commencer toute recherche en y faisant appel car on l'a toujours sous la main.

En ce qui concerne la programmation, il y a 2 volets à prendre en compte : Excel et son modèle d'objets. VBA est une version de Visual Basic dédiée aux applications Office, elle fonctionne avec et incorpore nativement les bibliothèques des applications Office. Ainsi travaillant avec VBA sous Excel, on n'a pas besoin par exemple de créer des instances de l'application et de ses composants pour pouvoir les manipuler, on y est déjà, Application invoque l'instance de l'application Excel ouverte, Workbooks les classeurs ouverts dans cette instance.... C'est un gain indéniable, il n'y a qu'à apprendre la hiérarchie des objets Excel et comment les manipuler (syntaxe à utiliser) pour programmer des actions. Les principaux dans un premier temps, dont on ne peut se passer : classeurs, feuilles, cellules et plages (Workbooks, Worksheets, Range).

L'autre volet est VBA proprement dit : le langage t'offre des moyens dont tu ne disposes pas en travaillant manuellement sur Excel, et une bonne utilisation de VBA consiste à ne pas se cantonner à reproduire avec VBA les actions que l'on réalise manuellement, mais à faire autrement pour utiliser pleinement son efficacité.

Le code exécutable s'organise en procédures (Sub ou Function, pour les principales), ce qu'on appelle couramment macros, il y a aussi des instructions déclaratives qui conditionnent l'exécution. Il faut distinguer ces éléments, mais au-delà faire porter l'effort immédiat sur ce qui permettra d'entrer dès le départ dans un type de programmation efficace : les variables (portée, types, déclarations, utilisation), les tableaux (variables particulières mais dont l'importance et l'intérêt justifie un chapitre spécifique), les divers types d'instructions (affectations, décisions [conditions], boucles...). Le reste suivra...

Cordialement.

Rechercher des sujets similaires à "visualiser avancement competences mes eleves"