Excel: regroupement de données de classeurs dans un seul

Résolu/Fermé
julien - 18 juin 2015 à 11:38
 Julien - 28 juin 2015 à 22:05
Bonjour,

Avec l'aide de membres du forum, j'arrive à la toute fin de mon projet mais le mur me semble encore bien compliqué à franchir vu mon niveau en excel...

Je vais essayer d'expliquer facilement:

Je suis enseignant, professeur principal, et j'ai crée un bulletin pour nos élèves.

J'ai crée un classeur excel dans lequel chaque enseignant, dans chaque matière, va évaluer tous les élèves (en onglet) et mettre sa remarque trimestrielle.

Moi, j'ai un classeur sur lequel j'aimerais regrouper toutes les données des différents enseignants pour créer le bulletin définitif de l'élève.

Concrètement:
Chaque enseignant va mettre sa remarque en B9 de chaque onglet de son classeur (classeur mathématique par exemple).
Mais chaque remarque doit être transférée sur mon classeur prof principal dans l'onglet correspondant à l'élève (onglet du même nom sur tous les classeurs) mais pas dans la meme case:
- la remarque de maths va par exemple aller en A5 alors que celle de français va en A3

J'aimerais avoir une macro qui va rechercher dans tous les classeurs contenu dans un dossier les infos que je souhaite pour les transférer vers un classeur de regroupement des données.

Par exemple, voila ce que dois faire la macro:
- ouvrir le classeur "français"
- sur la feuille 1 appelée (Nicolas 1) copier le contenu de A2 et le transférer sur le classeur "prof principal" sur la feuille 1 (qui s'appelle également "Nicolas 1") en B9
- faire cela pour toute les feuilles du classeur (sauf si elle ne trouve pas de nom correspondant dans mon classeur prof)
- ouvrir le classeur math, faire la même chose mais vers une autre destination sur le classeur prof, etc.

J'espère que mon explication est claire ;)

Pour faire plus simple, peut être qu'il faut d'abord rapatrier toutes les données dans un tableau sur mon classeur prof principal et seulement après les distribuer dans les onglets du classeur via la formule INDIRECT. Mais je ne sais pas rapatrier les données ;)

Merci d'avance et bon courage pour me comprendre!

Julien.



A voir également:

5 réponses

Bonjour,

Pour l'instant, sur mon classeur "prof principal", j'ai crée une feuille "regroupement" sur laquelle je regroupe les données que je souhaite dans un tableau. je le fais à la main car je sais pas comment faire autrement...

J'ai alors deux questions:
- est ce que je peux créer une macro qui actualise l'importation des données en ouvrant les classeurs en liaison? Parce que j'ai l'impression que la liaison n'est pas automatique...
- est ce qu'il existe une fonction qui ferait l'inverse de la fonction INDIRECT? J'aimerais par exemple que le contenu de B2 soit envoyé à la feuille dont le nom se trouve en A2, en case B9.

Est ce que je peux faire une macro pour cela?

Je cherche des solutions pour faciliter ce que je veux :)

Merci d'avance à tous!

Julien.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 juin 2015 à 07:35
Bonjour
Incompréhensible sans voir la réalité; donc:
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse

0
Merci Michel pour ta réponse!


En gros, j'ai le fichier ci dessous qui est mon bulletin (1er trimestre) avec en onglet chaque élève:
http://www.cjoint.com/c/EFthXCuAmxv


les deux classeurs ci dessous (maths et fr) doivent être regroupés dans mon classeur 1er trimestre.
http://www.cjoint.com/c/EFthYnUuQov
http://www.cjoint.com/c/EFthYUYN2Xv


Concrètement, pour les maths, A3 A5 A7 B9 N3 N5 N7 doivent être copiés collés respectivement dans A12 A14 A16 B18 N12 N14 N16 mais évidemment dans l'onglet du même nom (Nicolas vers Nicolas) du classeur 1er trimestre.

En français, A3 A5 A7 B9 N3 N5 N7 doivent être copié collé respectivement dans A3 A5 A7 B9 N3 N5 N7 mais évidemment dans l'onglet du même nom (Nicolas vers Nicolas) du classeur 1er trimestre.

Et ainsi de suite avec toutes les matières concernées mais évidemment je peux m'amuser à adapter la formule.

Pour l'instant j'ai fait un regroupement manuel dans l'onglet "regroupement" sur le classeur 1er trimestre pour ensuite rebalancer les données dans le classeur mais je n'aime pas trop cette solution....

J'espère que c'est plus clair pour toi ahah!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Julien
19 juin 2015 à 11:40
Bonjour,
Pour me faciliter le travail:
Merci de mettre les 3 classeurs dans un seul zip

d'avance Merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 juin 2015 à 11:53
euh!
En son temps j'avais fait une feuille Exel qui calculait les moyennes entre les conseils de classe pour des apprentis en BTS;
calcul moyennes à la date saisie du 1° conseil (ou trimestre)
puis à la date saisie du 2° conseil calcul du 2° trimestre
etc
Si ca t'intéresse, fais signe
0
Merci mais c'est une classe sans note. je veux juste regrouper les remarques, les compétences et les évaluations des compétences des différentes matières dans un seul doc...

Voila le lien: http://www.cjoint.com/c/EFtkdEoeNTv

Bon courage ;) et merci encore!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
20 juin 2015 à 06:51
Ok merci
je regarderai en début de semaine vu la belle météo ici et la f^te de la musique :o)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 23/06/2015 à 17:04
Un boulot énorme à faire car tu as utilisé un peu partout des cellules fusionnées horizontales et verticales rendant VBA inopérant. sans méthodes "usine à gaz"
M^me sans VBA ,elles sont à éviter le + possible surtout que leur aspect est facile à rendre; par exemple pour les horizontales:
|fancy]

je fais des vérifs qui n'en finissent pas à cause de cela car il y a souvent un piège que je n'ai pas vu

Edit: 17:02 h
Il y a aussi les noms de fichier qui doivent absolument correspondre: "français" au lieu de "fr", "mathématiques" au lieu de "maths"...

Michel
0
Ok je comprend et merci encore pour toute cette aide!

Pour les noms, tu peux évidemment les modifier pour prendre quelque chose de plus simple...

Pour les cellules fusionnées c'est plus compliqué mais s'il le faut je peux remettre en question ma mise en page..

Bon courage à toi!

Julien
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
24 juin 2015 à 08:21
Bonjour
Ci joint retour
http://www.cjoint.com/c/EFygdMJwSNX

structures:
les classeurs "matière" doivent être dans un sous-dossier et être les seuls sans les classeurs "trimestre" du dossier parent
dans la macro il faudra donc adapter la constante "chemin"

Cellules fusionnnées:
il faut effectuer les saisies dans la cellule de gauche de l'ancienne fusion: voir feuille "nicolas"

Feuille regroupement:
A mettre à jour ; il faudrait que tu testes la colonne A pour éviter les #REF

Essais:
j'ai effectué des essais sur 3 élèves en Français et Mathématiques: normalement, si c'est bon pour 3....

tu dis...
0
Bonjour Michel et à nouveau, merci pour ton travail.

Je ne comprend clairement pas tout :D

Pour l'instant, je n'arrive pas à lancer la macro car il m'ouvre la fenetre de débogage avec ChDir Chemin en jaune...

En ce qui concerne les cellules fusionnées, pas de problème, j'ai bien compris comment faire ;)

La feuille regroupement pose problème mais je peux la supprimer non? Je l'avais fait pour trouver une solution a mon problème mais avec ta macro je n'en ai plus besoin si?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Julien
Modifié par michel_m le 25/06/2015 à 17:19
Bonjour
1/ dans le module trimeste as tu modifié cette ligne
Const Chemin As String = "D:\docus\Julien\matieres\" 'emplacement des classeurs matières" A ADAPTER
ce chemin c'est sur mon ordi

2: je pensais que la feuille regroupement était prévue pour faire une édition des résultats pour tes conseils de classe; comme c'étaient uniquement des formules, je n'ai pas insisté

ce serait d'ailleurs pas mal sous une présentation plus agréable
de même qu'un bulletin individuel en jouant en ent^te le nom et la période : tu peux inserer une ligne en haut des tableaux, ca ne génera pas les macros
si tu te décides il y aurait juste à déclarer une nouvelle variable
Const Annee as string="2015-2016"
'---------
Sub Créer_bulletin_trimestre()

et dans le code
With Workbooks(Trimestre & ".xlsm").Sheets(T_eleves(Cptr))
.range("A1")= T_eleves(ptr) & ". " & Trimestre & " " & Annee
Ligne = .Columns("A").Find(what:=Nom, searchdirection:=xlPrevious).Row 'entete

et bien sur, centré sur plusieurs colonnes ! ;o)

Pour le reste,comme cela fait appel à des formules, à toi de jouer

A la rentrée, tu vas ëtre vénéré par tes collègues (ou jalousé et médit)
0
Julien > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
26 juin 2015 à 09:40
Bonjour Michel,

J'ai bien adapté la ligne chemin, j'avais fait une erreur, il manquait un accent..

J'ai maintenant cette ligne qui s'active: Workbooks.Open Filename:=Classeur

Si je comprend bien, la formule recherche les données dans tous les classeurs qui seront dans le dossier? Je peux ajouter une autres matières comment?

Seconde question, pour le second trimestre, les cellules à rechercher seront évidemment diférentes mais les cellules de destination sont les memes. SI j'ai bien compris, c'est ici que je dois mofidier les cellules pour chercher les infos au bon endroit?

For Cptr = 1 To UBound(T_eleves)
'------collecte
With Sheets(Trimestre)
' mémorisation des appréciations
Ligne = .Columns("A").Find(T_eleves(Cptr), .Range("A1"), xlValues).Row 'ligne élève
T_competant = .Range(.Cells(Ligne, "B"), .Cells(Ligne, "E"))
End With
With Sheets("Compétence")
'mémorisation des thèmes d'évaluation
Ligne = .Columns("A").Find(what:=Trimestre, searchdirection:=xlPrevious).Row + 2
T_libelle = .Range(.Cells(Ligne, "A"), .Cells(Ligne + 2, "A"))

Est ce que tu peux m'expliquer cette partie que je puisse la modifier moi meme?

Pour le regroupement, c'était vraiment une solution de départ que j'avais trouvé... Je pense l'enlever car chaque enseignant aura déjà sa propre fiche de synthèse. A la rigueur je ferai un regroupement sur chaque fichier par matière...

Courage pour m'expliquer tout ça :p ;)

Julien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 juin 2015 à 11:45
Bonjour

Excuses moi, mais je n'ai plus tellement l'appli en t^te

Pour comprendre le bazar et vérifier le code
dans l'éditeur VBA demande affichage " fen^tre "espion" (propriété: ancrable par clic droit dans cette fenêtre)
Tu surlignes la ou les variables voulue (classeur, trimestre, fich, nom, ligne...) puis débogage "ajouter un espion"
tu cliques dans la macro principale et tu appuies sur F8 qui te permet d'avancer en pas à pas par appui sur F8 tu verras ainsi la valeur des variables que tu auras sélectionné
cette fen^tre est très pratique pour piger ,écrire et tester des codes

pour le reste, sois patient car comme tout le monde je n'ai pas que ça à faire, mais tu peux mettre autant de matières que tu en as besoin sans toucher au code...
à tout à l'heure ou dmanche ou lundi
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
28 juin 2015 à 17:06
bonjour,

enlève les les noms d'élèves et leurs feuilles, tu pourras en remettre 3 ou 4 pour faire des essais
Dans la feuille a_modele de 1°trimestre tu crées autant de blocs matière que tu en as besoin
Attention: les orthogaphes doivent être identiques :trimeste et matières

et tu fais des sauvegarder sous "2ème trimestre.xlsm" et "3ème trimestre.xlsm".
et tu crées les classeurs matières à partir du fichier "français" par exemple

Seconde question, pour le second trimestre, les cellules à rechercher seront évidemment diférentes mais les cellules de destination sont les memes. SI j'ai bien compris, c'est ici que je dois mofidier les cellules pour chercher les infos au bon endroit?

tu n'as rien à modifier: si tu as regarder le code en pas à pas tu t'aperçois que la position est donné par la ligne du nom de la matière (peu importe le nom du prof)
Ligne = .Columns("A").Find(what:=Trimestre, searchdirection:=xlPrevious).Row
le +2 correspond à la ligne compétence 1
par ex mathématiques Ligne 10 compétence 1 ligne 12

voilà :o)
0
Michel,

Ce que tu as fait est absolument parfait!

Tout fonctionne très bien et même au delà de mes espérances!

Donc encore une fois, merci pour tout!
Julien.
0